码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode-6-basic

时间:2017-03-07 00:23:52      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:com   vector   bre   min   return   pow   --   logs   题目   

技术分享

解题思路:

这道题真实地反映了我今晚有多脑残=。=只需要从根号N开始向前找,第一个能被N整除的数就是width,然后存到结果就

可以了。因为离根号N越近,width越大,与length的差越小。

vector<int> constructRectangle(int area) {
        vector<int> result;
        int i;
        //float min = 0.1;
        int length,width;
        int start = pow(area, 0.5);
        for (i = start; i >= 1; i--) {
            if (area % i == 0) {
                width = i;
                length = area / i;
                break;
            }
        }
        result.push_back(length);
        result.push_back(width);
        return result;
    } 

技术分享

解题思路:这道题要求运行时间为O(n)且不能有额外的空间,有点意思。不过题目限定数组里都是正整数,且刚好在[1,size]

的范围内,所以考虑用负号做区分。从头开始扫描,将nums[nums[i]-1]的值设为负数,那么等扫描过一遍之后,

仍然是正数的index再加1就是缺失的数了。需要注意的是,设负数后,index会有负数,所以应该是将nums[abs(nums[i]) - 1]

设为负数。

vector<int> findDisappearedNumbers(vector<int>& nums) {
        vector<int> result;
        int i;
        for (i = 0; i < nums.size(); i++) {
            if (nums[abs(nums[i])-1] > 0)
                nums[abs(nums[i])-1] *= -1;
        }
        for (i = 0; i < nums.size(); i++) {
            if (nums[i] > 0)
                result.push_back(i+1);
        }
        return result;
    }

 

leetcode-6-basic

标签:com   vector   bre   min   return   pow   --   logs   题目   

原文地址:http://www.cnblogs.com/pxy7896/p/6512436.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!