leetcode题解-153. Find Minimum in Rotated Sorted Array && 238. Product of Array Except Self

来源:互联网 发布:移植术后软件 编辑:程序博客网 时间:2024/06/05 02:28

153, 题目:

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).Find the minimum element.You may assume no duplicate exists in the array.

本题和之前的一道题目很相似,都是将排序数组在某处进行翻转,不同的是本题寻找最小值。思路也很简单,两种方法:直接遍历和binary search。代码入下:

    public int findMin(int[] nums) {        for(int i=0; i<nums.length-1; i++){            if(nums[i] > nums[i+1])                return nums[i+1];        }        return nums[0];    }    public  int findMin1(int[] nums){        int left=0, right=nums.length-1, mid;        while(left < right){            mid = (left + right)/2;            if(nums[mid] > nums[right]) {                if(mid < nums.length-1 && nums[mid] > nums[mid+1])                    return nums[mid+1];                left = mid+1;            }            else{                if(mid >0 && nums[mid] < nums[mid-1])                    return nums[mid];                right = mid-1;            }        }        return nums[0];    }    public int findMin2(int[] nums) {        int start = 0, end = nums.length - 1, mid;        while (start  <  end) {            mid = (start + end) / 2;            if (nums[mid]  > nums[end])                start = mid + 1;            else                end = mid;        }        return nums[start];    }

238,题目:

Given an array of n integers where n > 1, nums, return an array output such that output[i] is equal to the product of all the elements of nums except nums[i].Solve it without division and in O(n).For example, given [1,2,3,4], return [24,12,8,6].Follow up:Could you solve it with constant space complexity? (Note: The output array does not count as extra space for the purpose of space complexity analysis.)

本题是求元素乘积(除了该位置元素外的其他所有元素)。很简单,一开始想到的方法比如,求所有元素之积然后除,背题目限制。然后还可以暴力遍历每个元素对其他元素求积,但是会超过时间限制。最后想到可以使用两次遍历的方法,第一次遍历得到该元素之前的所有元素之积,然后第二次进行反向遍历,用于求除去该元素之外所有元素之积。例如:

[1,2,3,4,5,6,7]第一次:[1,1,2,6,24,120,720]第二次:[....6*1*7*6*5, 24*1*7*6, 120*1*7, 720*1]

代码入下:

//暴力法    public  int[] productExpectSelf1(int[] nums){        int[] res = new int[nums.length];        for(int i=0; i<nums.length; i++){            int tmp = 1;            for(int j=0; j<nums.length; j++)                if(j != i)                    tmp *= nums[j];            res[i] = tmp;        }        return res;    }//两次遍历法    public int[] productExceptSelf2(int[] nums) {        int n = nums.length;        int[] res = new int[n];        res[0] = 1;        for (int i = 1; i < n; i++) {            res[i] = res[i - 1] * nums[i - 1];        }        int right = 1;        for (int i = n - 1; i >= 0; i--) {            res[i] *= right;            right *= nums[i];        }        return res;    }
阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝8个月流鼻涕怎么办 玄凤鹦鹉下蛋了怎么办 被冤家报复了该怎么办 现在13岁不上学怎么办 孩子高二了厌学怎么办 饿了怎么办by肉丁豆角 味精吃多了很渴怎么办 婴儿o型血黄疸高怎么办 老婆怀孕期间老公出轨怎么办 小孩又瘦又矮怎么办 8个月婴儿太瘦怎么办 太瘦了怎么办80多斤 led吊扇灯坏了怎么办 妹子内裤被看了怎么办 都已婚却相爱了怎么办 喝了很烫的水怎么办 金毛幼犬不吃狗粮怎么办 4孩子受凉了呕吐怎么办 尿多是什么原因造成的怎么办 5岁宝宝老尿床怎么办 五岁了还尿床怎么办 2岁宝宝晚上尿床怎么办 胃疼腹泻稀水怎么办 网购成瘾怎么办 知乎 军人被警察打了怎么办 对高院再审不服怎么办 对高院判决不服怎么办 白色砂锅烧黑了怎么办 手机被偷关机了怎么办 狗被眼镜蛇咬了怎么办 穿高跟鞋脚趾头长茧怎么办 穿皮鞋脚底板疼怎么办 鞋子穿了脚趾痛怎么办 脚被鞋子磨肿了怎么办 脚趾磨出茧子怎么办疼 脚掌长茧走路疼怎么办 脚底磨出茧子疼怎么办 手指上写字有茧怎么办 写字磨的茧子疼怎么办 脚上的大脚骨疼怎么办 脸特别烫 又红怎么办