当前位置: 首页 > article >正文

刷题笔记day01-数组

704 题

主要强调,左闭右闭的情况,就是每次查询都会和 [left, right] 进行比较。所以后面的都是mid-1,mid+1 的情况。

package main

func search(nums []int, target int) int {
	// 二分查找方法
	// 每次查找都是左闭右闭的情况
	left := 0
	right := len(nums) - 1
	var mid int
	for left <= right {
		mid = left + ((right - left) >> 1)
		if target > nums[mid] {
			left = mid + 1
		} else if target < nums[mid] {
			right = mid - 1
		} else {
			return mid
		}
	}
	return -1
}

func main() {
	res := search([]int{-1, 0, 3, 5, 9, 12}, 9)
	println(res)
}

27 移除元素

思路:直观的想法就是,遇到等于val的时候,之后后面的往前面一个个覆盖,类似于是插入排序。
// 使用快慢指针的方法,

快指针一定指向不是val的元素
相当于是遇到等于不等与的情况,slow++,然后和fast换
当遇到等于的情况,slow就指向val了,

func removeElement(nums []int, val int) int {
    // 使用快慢指针的方法,直观的想法就是,遇到等于val的时候,之后后面的
    var slow  = 0
    for fast := 0; fast < len(nums); fast++ {
        if nums[fast] != val {
            nums[slow] = nums[fast] 
            slow++
        }
    }
    return slow
}

http://www.kler.cn/a/104512.html

相关文章:

  • 2520. 统计能整除数字的位数 : 简单模拟题(时空复杂度最优解)
  • docker搭建个人镜像仓库
  • css-边框流水线
  • Spirit:继承 gh-ost 灵魂的 MySQL 在线大表变更方案
  • 图论02-【无权无向】-图的深度优先遍历DFS
  • VUE父组件向子组件传递数据和方法
  • 【嵌入式项目应用】__cJSON在单片机的使用
  • 威联通NAS进阶玩法之使用Docker搭建个人博客教程
  • 算法通过村第十六关-滑动窗口|黄金笔记|结合堆的应用
  • 并发编程面试笔记
  • 私人网盘nextcloud安装
  • 软信天成:助力某制造企业建设产品主数据管理平台案例分享
  • 导入自己的jacoco exec文件到IDEA并进行展示
  • c++构造函数
  • 【2024秋招】2023-9-14 最右线下后端开发二面
  • Vue 2 生命周期与 Vue 3 生命周期:介绍与差别对比
  • GoLong的学习之路(七)语法之slice(切片)
  • 运维 | 使用 Docker 安装 Jenkins | Jenkins
  • Are Large Language Models Really Robust to Word-Level Perturbations?
  • [linux] 怎么批量kill掉挂载运行python 某个.py文件的端口