算法训练第一天704.二分查找、27.移除元素。-创新互联
今天的代码展示在末尾
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:做网站、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的临颍网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!704. 二分查找 - 力扣(LeetCode)
第一题的想法不多,我最开始利用的是左闭右闭,退出条件想了好久,后来看讲解,学会了左闭右闭、左闭右开,了解了许多细节。
如下:左闭右开比左闭右闭时间复杂度低、在mid运算时,要利用left+(right-left)/2代替(left+right)/2。这是为了防止及数据溢出,例如边界值的运算,还有/2可以改称为运算>>1,这个更快速。自己最开始更新left,或right时会考虑不到mid。
27. 移除元素 - 力扣(LeetCode)
这是第二题,我利用vector自带的erase函数,和remove函数解的,不明所以,这是错误的,应该将最关键的部分,核心部分来手动实现原理,这样理解才能加深。
数组的空间是连续的,只能覆盖不能删除,vector是对数组进行了包装。
int search(vector& nums, int target)
{
//左闭右闭、左闭右开、【a、b】【a、b)这决定了每次更新后的值。
//【】a<=b【 )a>1);//>>得加(),左右移是优先级最低的
if(nums[mid]>target)//中值大,往左找
{
right=mid-1;
}
else if(nums[mid]>1);
// if(nums[mid]>target)//中值大,往左找
// {
// right=mid;
// }
// else if(nums[mid]& nums, int val)
{
//我的库函数解法
nums.erase(remove(nums.begin(),nums.end(),val),nums.end());//erase复杂度n
return nums.size();
//快慢指针的原理就是遍历,快慢一起走,遇到目标值,快指针移动,慢指针停,快指针就将指向的值赋给慢指针 ,实现覆盖
int slow=0;
int fast;
for(fast=0;fast
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享文章:算法训练第一天704.二分查找、27.移除元素。-创新互联
当前路径:http://pwwzsj.com/article/ddpoip.html