当前位置: 首页 > Web前端 > HTML

35.搜索插入位置-算法(leetode,附思维导图+全解)300题

时间:2023-03-29 11:56:28 HTML

零题:算法(leetode,附思维导图+全解)300题(35)搜索插入位置1题目描述概述二解(思维导图)三allsolutions1Scheme11)代码://Scheme1《忽略需求,遍历法》//思路://1)状态初始化//2)核心处理:遍历nums,如果是,当nums[i]>=target,直接返回i;//3)边界:遍历结束,如果nums[i]>=target没有找到,则返回l;(也就是在nums的末尾插入)。varsearchInsert=function(nums,target){//1)状态初始化constl=nums.length;//2)核心处理:遍历nums,此时如果nums[i]>=target,直接返回i;for(leti=0;i=target){返回i;}}//3)边界:遍历结束,如果没有找到nums[i]>=target,则返回l;(也就是在nums的末尾插入)。returnl;};2Scheme21)代码://Scheme2“二分法(开辟额外空间-map,避免死循环)”。//Tips:善用hints——1)nums是一个升序排列的数组,没有重复的元素。2)时间复杂度为O(logn)的算法——“二分法”。//思路://1)状态初始化//注意:使用map进行“辅助判断,否则会陷入死循环”——case:nums=[1,3,5,6],target=2。//2.1)Boundary:Inserttoheadandtail//2.2)正常,进行二分法varsearchInsert=function(nums,target){//1)状态初始化//注意:使用map进行“辅助判断”,否则会落入无限循环”——case:nums=[1,3,5,6],target=2。constl=nums.length;让左=0,右=l-1,地图=新地图();//2.1)边界:插入头部和尾部if(target<=nums[left]){return0;}elseif(target===nums[right]){returnl-1;}elseif(target>nums[right]){returnl;}//2.2)正常,做二分法else{while(left<=right){consttempStr=`${left}#${right}`;如果(map.has(tempStr)){返回左+1;}else{map.set(tempStr,1)}letmid=parseInt((left+right)/2);if(nums[mid]===target){returnmid;}elseif(nums[mid]>target){right=mid;}else{左=中;}}}}3Scheme31)代码://Scheme3"二分法,无多余空格-map"//技巧:如果nums[pos?1]>1)+左;constmid=parseInt((左+右)/2);if(nums[mid]>=target){resIndex=mid;右=中-1;}else{左=中+1;}}//3)返回结果resIndexreturnresIndex;}四更1progress1)LeetCode:307/2390.2)《剑指offer》:66/66.3)相关学习资料和笔记汇总:https://github.com/CYBYOB/algorithm-leetcode/tree/master/data%26notes。4)注:所有题目大概有2-5个解答,以后会不断更新题解。敬请关注~欢迎大家进群学习交流解决问题拿高薪~2GitHub-LeetCode项目仓库0)本项目地址:https://github.com/CYBYOB/algorithm-leetcode.目标与愿景:让大家具备一定的算法能力,在面试中应对算法(能举一反三的同学也能融入自己的肌肉和血液,甚至为公司的业务和技术赋能)。我还是每周更新——保证每周都有新题和新解,刺激你的神经和刷题欲望。欢迎对算法感兴趣的同学加入我们的社区。QQ群:933919972;作者QQ:1520112971;作者VX:c13227839870(可以拉你进群,一起学习交流~)。3作者标签1)《BAT小伪全栈工程师,专注前端,偶尔写点后端》。2)2019微信小程序应用开发大赛-全国三等奖;2019CODA大赛-Top17/211并获得“优秀团队”等称号3)“半自媒体人”,在校期间,个人公众号(IT三少。新自媒体(公众号)编号:马农三少)半年内实现0到5.8K+粉丝增长等。