首页 > 编程语言 >代码随想录算法训练营第一天leetcode704二分查找27移除元素

代码随想录算法训练营第一天leetcode704二分查找27移除元素

时间:2024-07-22 15:07:49浏览次数:13  
标签:27 nums int 随想录 fast middle right 移除 left

leetcode704,这是leetcode提交四次后通过的结果:

class Solution {

    public int search(int[] nums, int target) {         if(nums.length==1&&nums[0]==target)             return  0;         if(nums.length==2)             if(nums[0]==target)                 return 0;             else if(nums[1]==target)                 return 1;
       int left= 0;         int right = nums.length-1;         int middle = (int)Math.floor((right-left+1)/2);         while(left<right&&middle>left&&middle<right){             if(nums[left]==target)return left;             if(nums[right]==target)return right;                         if(nums[middle]>target){                 right = middle;                 middle = left + (int)Math.floor((right-left+1)/2);             }else if(nums[middle]<target){                 left = middle;                 middle = left + (int)Math.floor((right-left+1)/2);             }else{                 return middle;             }         }         return -1;     } } 没错,主打一个复杂又啰嗦。第一次没通过是没判断数组长度为1的情况;第二次没通过没判断数组长度为2的情况;第三次没通过是没判断左右边界是否就是要找的target值,所以把这三种情况都写进去就通过了,leetcode要是有新的测试用例,记得通知我。还有个易出错的地方,计算middle的时候,要加上left这个基地址。 上面是写的虽然过了力扣的测试用例,但是看了视频,有不少改进的地方: 1:middle=(right+left)>>>1 2,<>target后,right、left的边界不是直接用middle替换,要±1,多想一下,middle并不等于,所以范围不是从middle开始(while种的left、right不是由此)。 leetcode27移除元素 除了暴力解法,参考随想录的双指针方法。 class Solution {     public int removeElement(int[] nums, int val) {       int slow=0,fast=0;       for(fast=0;fast<nums.length;fast++){           if(nums[fast]!=val){               nums[slow++]=nums[fast];           }       }       return slow;     } }    

标签:27,nums,int,随想录,fast,middle,right,移除,left
From: https://www.cnblogs.com/twinkle/p/18311743

相关文章

  • 代码随想录day6 | 242 有效字母异位词 349 两个数组交际 202 快乐数 1 两数之和
    hash表遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法242判断字母异位词关于字符串的遍历问题//什么情况下遍历的是rune[]int36类型,什么情况下遍历的是char字节类型?s:="Hello,世界"fori,r:=ranges{ fmt.Printf("Index:%d,Rune:%c,......
  • 在AvaotaA1全志T527开发板上驱动WS2812 RGB LCD
    在AvaotaSBC的开发板中,通常会有几个WS2812RGBLED灯。例如AvaotaA1的如下位置:对于AvaotaOS,提供了硬件的LEDC(LightEmittingDiodeController),发光二极管控制器作为WS2812RGBLED灯的控制器。每个LED的三基色均可实现256级亮度显示,因此整个LED可完成25......
  • 无法在浏览器中访问Python 127.0.0.1:8000上的本地主机
    fromdjango.contribimportadminfromdjango.urlsimportpath,includeurlpatterns=[path('admin/',admin.site.urls),path('products/'),include('products.urls')#thisline]嗨,任何人。很抱歉问这样的问题,但这是我第一次尝试python。......
  • zzuli1027:判断水仙花数
    春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33。现在要求输入一个三位数,判断该数是否是水仙花数,如果是,输出“yes”,否则输出“no”输入一个三位的正整数。输出......
  • 代码随想录算法训练营第36天 | 动态规划基础2:62.不同路径、63.不同路径 II
    62.不同路径https://leetcode.cn/problems/unique-paths/submissions/548656029/代码随想录https://programmercarl.com/0062.不同路径.html63.不同路径IIhttps://leetcode.cn/problems/unique-paths-ii/description/代码随想录https://programmercarl.com/0063.不同路径......
  • AbMole| Sonidegib和Y-27632助力揭秘乳腺癌与骨转移新机制
     AbMole(奥默生物)是ChemBridge在中国的唯一官方指定合作伙伴。 近日由中科院上海营养与健康研究所的QiuYaoWu,GuoHongHu以及山东大学齐鲁医院的QiFengYang等多名研究人员在CellResearch期刊(IF=46)上,共同发表了题为“SCUBE2mediatesbonemetastasisofluminalbreast......
  • AbMole| Rapamycin, Y27632和SCH772984揭示EGFR-TKIs耐药机制
     AbMole(奥默生物)是ChemBridge在中国的唯一官方指定合作伙伴。由中国药科大学基础医学与临床药学学院的ZhenZhenPan,KaiWang,XiNiaoWang, XuanShengDing以及广州医科大学附属第五医院的JianYeZhang等多名研究人员在MolCancer.期刊(IF=37.3)上,发表了题为“Cholesterolprom......
  • 等保测评与ISO27001认证的区别全解析
    等保测评与ISO27001认证的区别全解析问题:等保测评与ISO27001认证有什么区别?回答:等保测评和ISO27001认证都是信息安全领域的重要标准,但它们在适用范围、标准要求、实施流程等方面存在显著差异。以下是详细解析:1.适用范围等保测评(信息安全等级保护):适用对象:主要适用于......
  • P2704 [NOI2001] 炮兵阵地
    原题链接题解经典的状压dpcode#include<bits/stdc++.h>#definelllonglong#definelowbit(x)((x)&(-x))usingnamespacestd;intsit[105];intdp[505][505][4];boolcheck(intx){intx1=(x>>1)>>1;intx2=(x<<1)<<1;......
  • 一入循环深似海,代码随想录螺旋矩阵二刷
    代码随想录螺旋矩阵二刷leetcode59来看下螺旋矩阵。螺旋矩阵这道题确实很容易写着写着就绕进去了。首先读下题。给出正整数n,生成n*n的矩阵。我们来看其中一个用例,完成一个圈是需要四个循环去填充。但是四条边填充的时候要始终保持一样的规则,比如左闭右开的规则。那么转几圈呢......