RangeAdditionII、ConstructtheRectangle、ExcelSheetColumnNumber

本文解析了三道LeetCode题目:ExcelSheetColumnNumber、ConstructtheRectangle 和 RangeAdditionII,介绍了每道题目的背景、算法实现思路及代码实现。
摘要由CSDN通过智能技术生成

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:

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

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

  3. 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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值