Find Minimum in Rotated Sorted Array I II@LeetCode
Find Minimum in Rotated Sorted Array
其实直接遍历也是可以也可以AC
,但是更加优化的解法应该是采用二分查找的思想。如果中间值比起点大就收缩起点,如果中间值比终点大就收缩终点,直到收缩到起点和终点相邻,也就是找到了翻转的部分。这里需要注意的是,数组可能是没有翻转过的,所以mid
的初值赋0
。
实现代码:
java
public class Solution { public int findMin(int[] num) { int begin = 0, end = num.length - 1, mid = 0; while (num[begin] > num[end]) { if (end - begin == 1) { mid = end; break; } mid = (begin + end) / 2; if (num[begin] < num[mid]) begin = mid; else end = mid; } return num[mid]; } }
Find Minimum in Rotated Sorted Array II
理论上这题应该也用二分法,碰到起点终点相同的情况就只能进行遍历,但是那样代码会更复杂并且效率上并不见得提高多少,所以这里我直接采用遍历的方法。
实现代码:
java
public class Solution { public int findMin(int[] num) { int min = num[0], length = num.length; if (num[0] >= num[length - 1]) { int index = 1; while (index < length) { if (num[index - 1] > num[index]) { break; } index++; } min = index == length ? num[index - 1] : num[index]; } return min; } }
1.1k 声望
64 粉丝
推荐阅读
关于 C++ vector 的两个小 tips
本来这篇文章标题我想起成《关于 vector 的两个小坑》,后来想想,其实也不算是坑,还是自己对原理性的东西理解的没做那么透彻。工作中遇到的很多问题,后来归根到底都是基础不牢靠。
findingea阅读 1.5k
【每日一题】T 秒后青蛙的位置
1377. T 秒后青蛙的位置关键词:深度优先题目来源:1377. T 秒后青蛙的位置 - 力扣(Leetcode)题目描述 {代码...} 给你一棵由 n 个顶点组成的无向树,顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下:在...
字节幺零二四阅读 663
【算法竞赛】力扣周赛(节选)2022-04-30
力扣周赛(节选)2022-04-306404. 将数组清空关键词:树状数组、找规律题目来源:6404. 将数组清空 - 力扣(Leetcode)——力扣第 103 场双周赛第4题题目描述 {代码...} 给你一个包含若干 互不相同 整数的数组 nums...
字节幺零二四阅读 640
【每日一题】翻转子数组得到最大的数组值
给你一个整数数组 nums 。「数组值」定义为所有满足 0 <= i < nums.length-1 的 |nums[i]-nums[i+1]| 的和。
字节幺零二四阅读 590
【每日一题】摘水果
在一个无限的 x 坐标轴上,有许多水果分布在其中某些位置。给你一个二维整数数组 fruits ,其中 fruits[i] = [positioni, amounti] 表示共有 amounti 个水果放置在 positioni 上。fruits 已经按 positioni 升序排...
字节幺零二四阅读 524
leetcode 2413 最小偶倍数
今天这题比较简单,一行代码就解决了,思路其实简单,就是判断下当前数的奇偶性,如果是偶数,那么最小公倍数肯定就是数本身;如果是奇数,那么就是两个数的乘积。
MMzhe阅读 457
【每日一题】使二叉树所有路径值相等的最小代价
给你一个整数 n 表示一棵 满二叉树 里面节点的数目,节点编号从 1 到 n 。根节点编号为 1 ,树中每个非叶子节点 i 都有两个孩子,分别是左孩子 2 * i 和右孩子 2 * i + 1 。
字节幺零二四阅读 454
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。