首页 > 其他分享 >代码随想录刷题第一天|704二分查找、27移除元素

代码随想录刷题第一天|704二分查找、27移除元素

时间:2022-09-21 17:13:59浏览次数:86  
标签:27 return nums 元素 随想录 len middle length 移除

704、二分查找

leetcode链接:https://leetcode.cn/problems/binary-search/

  • 思路一暴力解法-遍历整个数组(切片),如果当前遍历元素和目标值一致,返回当前元素下标即可。
  • 代码:
//暴力解法
for i := 0; i < len(nums);i++ {
    if nums[i] == target {
        return i
    }
}
return -1
  • 思路二:二分查找-由于数组有序,那么定义左右边界,然后不断更新左右边界的值,直到找到目标元素,这样做的目的是缩小查找范围。
  • 代码:
//左闭右闭
l := 0
r := len(nums) - 1
for l <= r {
    mid := (l+r) / 2
    if nums[mid] < target {
        l = mid+1
    } else if nums[mid] > target {
        r = mid-1
    } else {
        return mid
    }
}
return -1

//左闭右开
l := 0
r := len(nums)
for l < r {
    middle := (l + r) / 2
    if nums[middle] > target {
        r = middle
    } else if nums[middle] < target {
        l = middle + 1
    } else {
        return middle
    }
}
return -1

27、移除元素

leetcode链接:https://leetcode.cn/problems/remove-element/

  • 思路一:快慢双指针法-快指针获取新数组需要的元素,慢指针获取新数组中需要更新的位置
  • 代码:
//快慢双指针法
var f, s int
for f, s = 0, 0; f < len(nums);f++ {
    if nums[f] != val {
        nums[s] = nums[f]
        s++
    }
}
return s
  • 思路二:双向双指针法
  • 代码:
l := 0
r := len(nums) - 1
for l <= r {
    for l <= r && nums[l] != val {
        l++
    }
    for l <= r && nums[r] == val {
        r--
    }
    if l < r {
        nums[l] = nums[r]
        l++
        r--
    }
}
return l
  • 思路三:暴力解决法-遍历切片,遇到目标值就再开一个循环去遍历剩余元素,然后依次把下一个元素移到前一位,最后将i--,length--
  • 代码:
func removeElement(nums []int, val int) int {
	length := len(nums)
	for i := 0; i < length; i++ {
		if nums[i] == val {
			for j := i; j < length-1; j++ {
				nums[j] = nums[j+1]
			}
			i--
			length--
		}
	}
	return length
}

标签:27,return,nums,元素,随想录,len,middle,length,移除
From: https://www.cnblogs.com/xiaoxu365/p/16715132.html

相关文章

  • 编程素养(代码随想录)
    编程素养(代码随想录)#看了这么多代码,谈一谈代码风格!最近看了很多录友在leetcode-master(opensnewwindow)上提交的代码,发现很多录友的代码其实并不规范,这一点平时在交......
  • 27. 浏览器实现抓包
    1.前言几乎所有浏览器都提供了抓取数据包的功能,因为浏览器为抓包提供了一个专门的操作界面,因此这种抓包方式也被称为“控制台抓包”。本节以Chrome浏览器为例进行抓包......
  • 27-MapReduce架构设计和企业最佳案例(上)_ev
            MapReduce流程图    播客  ......
  • Luogu T273083 新的题目 题解
    怕放洛谷有人看,就搬过来了。本题解提供一个\(O(qn)\)的做法(实际上是暴力的优化)。先考虑暴力求解。对于每个操作,要求代价\(W\times(\sum_{i\inX}^{i}w[i]\times......
  • 服务器热插拔硬盘移除指南
    前言服务器大多支持2.5inch盘位的SATA/SAS硬盘热插拔,实际操作需要注意流程。插入首先确定面板上的bay直连主板而不是通过RAID卡进行转接,RAID卡需要重启才能识别。直连......
  • 2022.08.27 模拟赛小结
    2022.08.27模拟赛小结目录2022.08.27模拟赛小结题面更好的阅读体验戳此进入赛时思路T1T2T3T4正解T2T1T3T4UPD题面链接(这个链接只是为了自己方便找,页面设置权限了,不......
  • ASR6500S SIP模块与SX1262系列集成替代SX1278 SX1262内核+RF前端
    ASR6500S是一系列LoRaSIP模块,集成了RF前端和LoRa无线电收发器SX1262系列,支持LoRa和FSK调制。LoRa技术是一种针对LPWAN应用的低数据速率、超远程、超低功耗通信进行优化的......
  • 27. Fragment + ViewPager
    27.Fragment+ViewPager27.1fragment与viewPager的联合应用ViewPager+Fragment形成翻页效果→减少用户的操作。27.2ViewPager2基本应用新的空白工程布局文......
  • leetcode 127 -- 哈希表
    题目描述217手写哈希表classSolution{public:#defineDEFAULT_LEN16#defineDEFAULT_FACTOR0.75fconstfloatfactor=DEFAULT_FACTOR;typed......
  • Delphi 经典游戏程序设计40例 的学习 例27 残留的轨迹是抛物线
     unitR27;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,ExtCtrls,StdCtrls;typeTRei27=cl......