随笔分类 -  leetcode-二分查找

摘要:题目: 解答: 1 class Solution { 2 public: 3 int missingNumber(vector<int>& nums) 4 { 5 int i = 0; 6 int j = nums.size() - 1; 7 8 while(i <= j) 9 { 10 int m 阅读全文
posted @ 2020-05-05 14:34 梦醒潇湘 阅读(271) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int search(vector<int>& nums, int target) 4 { 5 int left = left_bound(nums, target); 6 int right = right_bound( 阅读全文
posted @ 2020-05-05 14:28 梦醒潇湘 阅读(291) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int minArray(vector<int>& nums) 4 { 5 int left = 0; 6 int right = nums.size() - 1; /* 左闭右闭区间,如果用右开区间则不方便判断右值 */ 阅读全文
posted @ 2020-05-05 14:24 梦醒潇湘 阅读(147) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 bool searchMatrix(vector<vector<int>>& matrix, int target) 4 { 5 int i = matrix.size() - 1; 6 int j = 0; 7 8 // 阅读全文
posted @ 2020-05-05 14:21 梦醒潇湘 阅读(239) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int findString(vector<string>& words, string s) 4 { 5 int left = 0; 6 int right = words.size() - 1; 7 8 while ( 阅读全文
posted @ 2020-05-05 14:18 梦醒潇湘 阅读(202) 评论(0) 推荐(0)
摘要:题目: 解答: 这个题目真是打了各种补丁啊。。。。 1 class Solution { 2 public: 3 int search(vector<int>& nums, int target) 4 { 5 int l = 0; 6 int r = nums.size() -1; 7 8 whil 阅读全文
posted @ 2020-05-05 14:08 梦醒潇湘 阅读(234) 评论(0) 推荐(0)
摘要:题目: 解答: 假如不存在重复元素的话,则二分法很好实现,但此题存在重复元素,所以会比较复杂一点。 举例: 对于 [0, 1, 4, 4, 4] 这个数组,使用二分法拿出位于中间的 idx 为 2 的数字 4,然后我们发现 nums[idx] > idx; 此刻我们除了可以确认 idx2 不是魔术索 阅读全文
posted @ 2020-05-05 14:00 梦醒潇湘 阅读(236) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int smallestDivisor(vector<int>& nums, int threshold) 4 { 5 int l = 1, r = *max_element(nums.begin(), nums.end( 阅读全文
posted @ 2020-05-05 13:54 梦醒潇湘 阅读(156) 评论(0) 推荐(0)
摘要:题目: 解答: 方法一: 1 class Solution { 2 public: 3 vector<int> findClosestElements(vector<int>& arr, int k, int x) 4 { 5 int size = arr.size(); 6 7 int left 阅读全文
posted @ 2020-05-05 13:44 梦醒潇湘 阅读(306) 评论(0) 推荐(0)
摘要:题目: 解答: 1 /** 2 * Forward declaration of guess API. 3 * @param num your guess 4 * @return -1 if num is lower than the guess number 5 * 1 if num is hig 阅读全文
posted @ 2020-05-05 13:34 梦醒潇湘 阅读(192) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int lengthOfLIS(vector<int>& nums) 4 { 5 int n = (int)nums.size(); 6 7 if (n == 0) 8 { 9 return 0; 10 } 11 vect 阅读全文
posted @ 2020-05-05 13:29 梦醒潇湘 阅读(246) 评论(0) 推荐(0)
摘要:题目: 解答: 方法一:排序。 如果对数字进行排序,则任何重复的数字都将与排序后的数组相邻。 方法二:集合。 如果我们在数组遍历时存储每个元素,我们可以在数组迭代过程中检查每个元素。 方法三:二进制 方法四:二分查找 int findDuplicate(vector<int> &nums) { in 阅读全文
posted @ 2020-05-05 13:26 梦醒潇湘 阅读(604) 评论(0) 推荐(0)
摘要:题目: 解答: 1 // The API isBadVersion is defined for you. 2 // bool isBadVersion(int version); 3 4 class Solution { 5 public: 6 int firstBadVersion(int n) 阅读全文
posted @ 2020-05-05 13:17 梦醒潇湘 阅读(135) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int hIndex(vector<int>& citations) 4 { 5 int n = citations.size(); 6 7 int pivot; 8 int left = 0; 9 int right = 阅读全文
posted @ 2020-05-05 13:13 梦醒潇湘 阅读(162) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 bool searchMatrix(vector<vector<int>>& matrix, int target) 4 { 5 int i = matrix.size()-1; 6 int j=0; 7 while(i 阅读全文
posted @ 2020-05-05 13:06 梦醒潇湘 阅读(145) 评论(0) 推荐(0)
摘要:题目: 解答: 方法一:暴力法 按照题目要求直接求。把所有可能的子数组求和并更新ans ,直到我们找到最优子数组且和满足 sum≥s 。 (1)初始化ans = INT_MAX; (2)用变量i从左到右遍历数组: A. 用变量j从当前元素到数组尾部遍历: a. 将i到j这些元素求和得到sum b. 阅读全文
posted @ 2020-05-05 13:01 梦醒潇湘 阅读(221) 评论(0) 推荐(0)
摘要:题目: 解答: 方法一:线性扫描 本方法利用了连续的两个元素 nums[j]和 nums[j + 1]不会相等这一事实。于是,我们可以从头开始遍历 nums数组。每当我们遇到数字 nums[i],只需要检查它是否大于下一个元素 nums[i+1] 即可判断 nums[i]是否是峰值。 1 publi 阅读全文
posted @ 2020-05-05 12:50 梦醒潇湘 阅读(344) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int findMin(vector<int>& nums) 4 { 5 int left = 0; 6 int right = nums.size() - 1; /* 左闭右闭区间,如果用右开区间则不方便判断右值 */ 阅读全文
posted @ 2020-05-05 12:44 梦醒潇湘 阅读(131) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 int findMin(vector<int>& nums) 4 { 5 int left = 0; 6 int right = nums.size() - 1; /* 左闭右闭区间,如果用右开区间则不方便判断右值 */ 阅读全文
posted @ 2020-05-05 12:40 梦醒潇湘 阅读(192) 评论(0) 推荐(0)
摘要:题目: 解答: 1 class Solution { 2 public: 3 bool search(vector<int>& nums, int target) 4 { 5 int l = 0; 6 int r = nums.size() -1; 7 8 while (l <= r) 9 { 10 阅读全文
posted @ 2020-05-05 12:35 梦醒潇湘 阅读(147) 评论(0) 推荐(0)