您的位置:首页 > 其它

RangeAdditionII、ConstructtheRectangle、ExcelSheetColumnNumber

2017-12-10 14:46 387 查看

RangeAdditionII、ConstructtheRectangle、ExcelSheetColumnNumber

ExcelSheetColumnNumber

Related to question Excel Sheet Column Title

Given a column title as appear in an Excel sheet, return its corresponding column number.

For example:

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28


/*
* 171. Excel Sheet Column Number
*/

int titleToNumber(string s) {
int maxSize=s.size();
int result=0;
for(auto ite=s.begin();ite!=s.end();++ite)
{
float p=maxSize-(ite-s.begin()+1);
double num=pow(26,p);
int temp=*ite-'A'+1;
result+=temp*num;
}
cout<<result;

int pow=1;
result=0;
for(int i=1;i<=s.size();++i)
{
int temp=*(s.end()-i)-'A'+1;
result+=temp*pow;
pow*=26;
}

cout<<result;

return result;
}


Construct the Rectangle

For a web developer, it is very important to know how to design a web page’s size. So, given a specific rectangular web page’s area, your job by now is to design a rectangular web page, whose length L and width W satisfy the following requirements:

The area of the rectangular web page you designed must equal to the given target area.

The width W should not be larger than the length L, which means L >= W.

The difference between length L and width W should be as small as possible.

You need to output the length L and the width W of the web page you designed in sequence.

Example:

Input: 4

Output: [2, 2]

Explanation: The target area is 4, and all the possible ways to construct it are [1,4], [2,2], [4,1].

But according to requirement 2, [1,4] is illegal; according to requirement 3, [4,1] is not optimal compared to [2,2]. So the length L is 2, and the width W is 2.

Note:

The given area won’t exceed 10,000,000 and is a positive integer

The web page’s width and length you designed must be positive integers.

/*
* 492. Construct the Rectangle
*/
vector<int> constructRectangle(int area) {

int length=0;
int width=0;

int temp=sqrtf(area);
for(int i=temp;i>0;--i)
{
if(area%i==0)
{
length=area/i;
width=i;
break;
}
}
vector<int> result{};
result.push_back(length);
result.push_back(width);

for (auto item=result.begin(); item !=result.end() ; ++item) {
cout<<*item<<ends;
}
return result;
}


RangeAdditionII

Given an m * n matrix M initialized with all 0’s and several update operations.

Operations are represented by a 2D array, and each operation is represented by an array with two positive integers a and b, which means M[i][j] should be added by one for all 0 <= i < a and 0 <= j < b.

You need to count and return the number of maximum integers in the matrix after performing all the operations.

Example 1:

Input:

m = 3, n = 3

operations = [[2,2],[3,3]]

Output: 4

Explanation:

Initially, M =

[[0, 0, 0],

[0, 0, 0],

[0, 0, 0]]

After performing [2,2], M =

[[1, 1, 0],

[1, 1, 0],

[0, 0, 0]]

After performing [3,3], M =

[[2, 2, 1],

[2, 2, 1],

[1, 1, 1]]

So the maximum integer in M is 2, and there are four of it in M. So return 4.

/*
* 598.RangeAdditionII
*/
int maxCount(int m, int n, vector<vector<int>>& ops) {

if(ops.size()==0)
return m*n;
for(int i=0;i<ops.size();++i)
{
vector<int > row=*(ops.begin()+i);
if(row[0]<m)
m=row[0];
if(row[1]<n)
n=row[1];
}
cout<<n*m;
return n*m;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode