最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

LeetCode T35

IT圈 admin 1浏览 0评论

LeetCode T35

思路1:直接前向遍历一次,搜到相等或大于就返回该位置

class Solution {
public:int searchInsert(vector<int>& nums, int target) {int len =  nums.size();for(int i = 0 ; i < len; i++){if((nums[i] == target) || (nums[i] > target)) return i;}return -1;}
};

思路2:二分法

二分法是本题考试的知识点。

class Solution {
public:int searchInsert(vector<int>& nums, int target) {int left = 0, right = nums.size() - 1, mid;while (left <= right){mid = (left + right)/2;if (nums[mid] > target) right = mid - 1;else if (nums[mid] < target) left = mid + 1;else return mid;}return left; }
};

其中,(left + right)/ 2 只取整数部分,舍弃小数部分,不会四舍五入。

二分法的思想是根据移动规则,每次让左或右指针向中间逼近。right = mid-1正好是使right指针左移一位,left = mid+1正好是使left指针右移一位。left和right的移动规则是二分问题的模板。

LeetCode T35

思路1:直接前向遍历一次,搜到相等或大于就返回该位置

class Solution {
public:int searchInsert(vector<int>& nums, int target) {int len =  nums.size();for(int i = 0 ; i < len; i++){if((nums[i] == target) || (nums[i] > target)) return i;}return -1;}
};

思路2:二分法

二分法是本题考试的知识点。

class Solution {
public:int searchInsert(vector<int>& nums, int target) {int left = 0, right = nums.size() - 1, mid;while (left <= right){mid = (left + right)/2;if (nums[mid] > target) right = mid - 1;else if (nums[mid] < target) left = mid + 1;else return mid;}return left; }
};

其中,(left + right)/ 2 只取整数部分,舍弃小数部分,不会四舍五入。

二分法的思想是根据移动规则,每次让左或右指针向中间逼近。right = mid-1正好是使right指针左移一位,left = mid+1正好是使left指针右移一位。left和right的移动规则是二分问题的模板。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论