代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。

704.二分查找 题目链接:leetcode704 Binary search

暴力解法

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

这里就是一个for循环来遍历数组然后找出是否存在条件。
Tips:nums.size() 求数组长度,然后我也见过nums.size()-1, 忘了这是啥了。(看到后面就想起来了是为了注意边界然后减1)

二分法:二分法使用条件:1.有序数组,2.无重复
二分法同时涉及了很多关于边界的条件,因此区间分为两种左闭右闭[left,right]和左闭右开[left,right)

第一种边界为[left,right]:

class Solution{public:
int search(vector<int>& nums,int target)
{int left=0,right=nums.size()-1;//在这里因为取到的区间为左闭右闭所以可以取到;
while(left<=right)
{int mid=left+((right-left)/2);//防止溢出
if(nums[mid]<target)
{left=mid+1;}//target 在右区间所以是[mid+1,right]
else if(nums[mid]>target)
{right=mid-1;}// same
else return mid;}
return -1;
}
};

第二种边界为[left,right)

class Solution{public:
int search(vector<int>& nums,int target)
{int left=0,right=nums.size();
while(left<right)
{int mid=left+((right-left)>>1);//>>1 向右移位,对整数来说等于除2,好像是更快
if(nums[mid]<target)
{left=mid+1;}
else if(nums[mid]>target)
{right=mid;}
else return mid;}
return -1;
}
};

Tips:二分法比较基础,感觉比较重要的是的是以下几点

  1. 区间范围,[left,right] [left,right)
  2. 溢出问题 mid=left+((right-left)/2)

27.移除元素题目链接 leetcode 27 remove element

暴力解法

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

双指针法

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;}
};

双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组
慢指针:指向更新 新数组下标的位置

当条件一致时慢指针跟随快指针动。

代码随想录算法训练营day1相关推荐

  1. 代码随想录算法训练营第七天| 哈希表理论基础 ,454.四数相加II, 383. 赎金信, 15. 三数之和, 18. 四数之和

    代码随想录算法训练营第七天| 哈希表理论基础 ,454.四数相加II, 383. 赎金信, 15. 三数之和, 18. 四数之和 454.四数相加II 建议:本题是 使用map 巧妙解决的问题,好好体 ...

  2. 代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II。

    代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II. 977.有序数组的平方 209. 长度最小的子数组 59. 螺旋矩阵 II 977.有序数组的 ...

  3. 代码随想录算法训练营第二天 | 力扣977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II

    代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II 977.有序数组的平方 题目链接:有序数组的平方 题目描述: 给你一个按 非递减顺序 排序的整 ...

  4. 代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II

    代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II 一. LeetCode977.有序数组的平方 1. 题目链接[LeetCode9 ...

  5. _42LeetCode代码随想录算法训练营第四十二天-动态规划 | 121.买卖股票的最佳时机、122.买卖股票的最佳时机II

    _42LeetCode代码随想录算法训练营第四十二天-动态规划 | 121.买卖股票的最佳时机.122.买卖股票的最佳时机II 题目列表 121.买卖股票的最佳时机 122.买卖股票的最佳时机II 1 ...

  6. _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II 、55.跳跃游戏、45.跳跃游戏II

    _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II .55.跳跃游戏.45.跳跃游戏II 题目列表 122.买卖股票的最佳时机II 55.跳跃游戏 45 ...

  7. _32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 、714.买卖股票的最佳时机含手续费、968.监控二叉树

    _32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 .714.买卖股票的最佳时机含手续费.968.监控二叉树 题目列表 738.单调递增的数字 714.买卖股票 ...

  8. 代码随想录算法训练营第30天| 332.重新安排行程 、51. N皇后 、 37. 解数独

    代码随想录算法训练营第30天| 332.重新安排行程 .51. N皇后 . 37. 解数独 332.重新安排行程 开始想的是将行程进行全排列之后,然后选出一个字典排序最小的.就也是使用的回溯的思路. ...

  9. 代码随想录算法训练营Day12 栈与队列

    #代码随想录算法训练营 代码随想录算法训练营Day12 栈与队列| 239. 滑动窗口最大值 347.前 K 个高频元素 总结 239. 滑动窗口最大值 给定一个数组 nums,有一个大小为 k 的滑 ...

最新文章

  1. 深入理解angularjs $watch ,$apply 和 $digest --- 理解数据绑定过程
  2. 英国税务机构HMRC被指收集了510万英国人的语音记录
  3. Ext.Net学习笔记01:在ASP.NET WebForm中使用Ext.Net
  4. 子弹短信新发布,支付宝即将入驻
  5. 敏捷是如何使你跑得更快?
  6. HALCON示例程序class_2dim_unsup.hdev基于二维直方图的聚类分类
  7. 如何在并发中给 HttpClient 设置不同的超时时间?
  8. linux系统中变量,Linux系统中的环境变量知识详解
  9. 武汉工程大学2020GPLT选拔赛(上)
  10. 礼物gift(DP)
  11. android 自定义进度条 水量,Android自定义带水滴的进度条样式(带渐变色效果)...
  12. pacman吃豆人_“植物河豚”狗爪豆,你吃过吗?
  13. 百度云安装WordPress,提示数据库连接错误!
  14. Spring Aop 的配置与运用
  15. 英文java简历模板下载_JAVA技术人员英文简历模板
  16. 产品经理面试,说一下你是怎么做产品规划的?
  17. 视频教程-Go快速入门强化-Go语言
  18. Python3的unichr()消失了?不,升级了!
  19. scala case 常用简写
  20. 【我的读书】《薛兆丰经济学讲义》助你变得更理性、悦纳和进取

热门文章

  1. python 股票 实例-python-面向对象(股票对象举例)
  2. E500 TLB miss 及 DSI处理分析(2)
  3. 遇到bug我们如何分析定位?
  4. 第二届全国高校计算机能力挑战赛-Java程序设计赛
  5. UVA 12663 第九届省赛 高桥与低桥 线段树
  6. 基于Vivado MIG IP核的DDR3读写实验(top_rom_ddr/ddr_top)
  7. 深度linux任务栏在哪,更新Deepin 20后任务栏dde-dock消失不见的暂时解决
  8. 无法启动此程序因为计算机中丢失d3dx,因计算机中丢失d3dx9-41.dl而无法启动程序的解决办法...
  9. 苏大计算机学院出国交流,新闻 | 2019年苏州大学国际化工作交流和推进会顺利举办...
  10. 集成电机驱动方案(STM32+DRV8841)