当前位置: 首页 > news >正文

重庆建设工程安全协会网站ip分享网站

重庆建设工程安全协会网站,ip分享网站,wordpress获得分类下的子分类,怎样策划一个营销型网站代码随想录二刷day01704. 二分查找27. 移除元素977. 有序数组的平方704. 二分查找 题目链接 做这种题最好现在纸上写一写,如果在大脑中想,可能一会就晕了。 二刷的时候发现了一个新的知识点 即: >>的作用 二分法第二种写法&#xff1a…

代码随想录二刷day01

      • 704. 二分查找
      • 27. 移除元素
      • 977. 有序数组的平方

704. 二分查找

题目链接
做这种题最好现在纸上写一写,如果在大脑中想,可能一会就晕了。 二刷的时候发现了一个新的知识点 即: >>的作用
二分法第二种写法:左闭右开[left, right)

  • left <=right 时没有意义
  • if (nums[middle] > target) right 要赋值为 middle ,因为当前这个nums[middle]一定不是target
  • if (nums[middle] < target) left 要赋值为 middle ,因为当前这个nums[middle]一定不是target
class Solution {
public:int search(vector<int>& nums, int target) {int left = 0;int right = nums.size(); // 定义target在左闭右开的区间里,即:[left, right)while (left < right) { // 因为left == right的时候,在[left, right)是无效的空间,所以使用 <int middle = left + ((right - left) >> 1);if (nums[middle] > target) {right = middle; // target 在左区间,在[left, middle)中} else if (nums[middle] < target) {left = middle + 1; // target 在右区间,在[middle + 1, right)中} else { // nums[middle] == targetreturn middle; // 数组中找到目标值,直接返回下标}}// 未找到目标值return -1;}
};

int middle = left + ((right - left) >> 1) 相当于 int middle = left + ((right - left) / 2)
举个小栗子

>>: 二进制右移
举个例子: 1010 >> 1 == 0101
1010 十进制 10
0101 十进制 5
综上 >> 1 作用相当于除二

所以 left + ((right -left) >> 1) ==> left + ((right -left)/2)

为什么不直接用(left + right) /2 而用left + ((right -left) >> 1)
答: 是因为left + right 在某种情况下可能会超过基本类型所能容纳的最大值,而且 >> (位运算) 比 / 运算要快一点。

27. 移除元素

题目链接
解题思路: 双指针(快慢指针法) 一快一慢。

本题中:

  • 快指针 是用来获取新数组中的元素;
  • 慢指针是用来获取新数组中需要更新的位置。
// 时间复杂度:O(n)
// 空间复杂度:O(1)
class Solution {
public:int removeElement(vector<int>& nums, int val) {int slowIndex = 0;for(int fastIndex = 0; fastIndex < nums.size();fastIndex++){if(val != nums[fastIndex]){nums[slowIndex++] = nums[fastIndex];}}return slowIndex;}
};

注:数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。


977. 有序数组的平方

题目链接
注:本题中给出的数组是有序的,则最大值应该在两端,不可能在中间。
采用双指针,从两边向中间就行遍历,并比较大小,将大的放在右端。
i 指向 起始位置,j指向终止位置

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int k = nums.size() - 1;vector<int> result(nums.size(),0);for(int i = 0,j = nums.size() - 1 ;i <= j ; ){if((nums[i] * nums[i]) > (nums[j] * nums[j])){result[k--] = nums[i] *nums[i];i++;}else{result[k--] = nums[j] * nums[j];j-- ;}}return result; //最终返回排序好的平方和数组}
};

最终返回排序好的平方和数组。

http://www.sczhlp.com/news/149825/

相关文章:

  • 论文收录网站什么网站可以做问卷调查
  • 网站建设策划书ppt公司网站宣传自己做的灯展
  • 网站登记模板石家庄网站建设模板
  • 公司网站优化方案手机主页网站推荐
  • 深圳商城网站设计东莞网页制作与网站设计
  • 网站域名背景设计师网站崩了
  • 黔西县城市建设局网站建设通网
  • 图库下载网站源码宁波网站建设设计
  • 想做网站要学什么网站建设 2015年11月
  • 四川网站建设服务软文推广营销
  • 单页购物网站源码建设医院网站的目的
  • 建设网站方案 ppt网站虚假备案
  • 大气集团企业网站模板学设计哪个专业好
  • 专业的网站建设公司排名东莞优化公司首选3火星
  • 龙口建设局网站淄博定制网站建设公司
  • 网站设计思想作图在线制作
  • 南昌网站小程序开发深圳企业排行榜
  • 网站落地页如何做免费网页模板网站
  • 网站授权合同优秀的网站通过什么提供信息
  • 免费的十大免费货源网站河北省建设局网站材料备案
  • 什么类型的公司需要做建设网站的山西做网站的
  • 辽宁网站建设招标深圳网站制作公司
  • 网站做一些流量互换id文件直接导入wordpress
  • 兰州做网站 东方商易深圳网站建设公司哪家好
  • 呼和浩特住房和城乡建设部网站电商网站开发流程list
  • 怎么向搜索引擎提交网站qq网页版 登陆
  • 深圳网站设计收费企业网站的建设报价
  • 东莞网站建设最优全国企业征信系统查询平台
  • 宜昌需要做网站建设的公司wordpress 添加锚点
  • arial 网站开发是用犀利企业邮箱排行榜