今天看卡哥代码随想录第一课 数组理论基础

  1. array在内存上是连续的,包括二维数组
  2. array是容器vector的底层实现

刷题:

常见的二分法

容易写错的是两个地方:一是条件判断:while(left < right) 二是right = middle - 1还是right = midddle (left一直都是 left = middle + 1, 因为我们一般没有定义左开右闭区间)

判断方法:

要是我们定义我们的target搜索空间为左闭右闭区间:就用while(left <= right) 和 right = middle - 1

要是我们定义我们的target搜索空间为左闭右开区间:就用while(left < right) 和 right = middle

数组元素删除

c++里的vector erase的时间复杂度为O(n)。

快慢指针可以解决,使用慢指针覆盖(没有删除操作)

有序含负数数组 -> 有序平方数组

指针从两头开始

#刷题#

全部评论

相关推荐

2024-12-24 22:52
已编辑
湖南大学 Java
投票
华为 通用软开 19.5*14
点赞 评论 收藏
分享
2024-12-17 22:22
已编辑
门头沟学院 golang
12.17&nbsp;时长&nbsp;---&nbsp;1h20min自我介绍1.对于go的make和new2.对于go的数组和切片&nbsp;切片扩容&nbsp;切片是否并发安全3.对于go&nbsp;context使用&nbsp;cancel函数内部如何传递信号的4.对于sync.pool了解5.对于go&nbsp;map是否并发安全&nbsp;扩容机制&nbsp;是否有序6.对于go&nbsp;sync.map底层如何实现并发安全7.对于uintptr&nbsp;unsafe.Pointer了解8.&nbsp;go&nbsp;的&nbsp;gc,&nbsp;gmp9.channel底层数据结构,&nbsp;对于有缓冲区,&nbsp;但是已经关闭的channel&nbsp;写会怎么样&nbsp;读会怎么样10.&nbsp;对于channel&nbsp;写操作&nbsp;底层是发生了什么12.&nbsp;协程和线程的区别13.代码结果题func&nbsp;main()&nbsp;{runtime.GOMAXPROCS(1)go&nbsp;func()&nbsp;{fmt.Println(&amp;quot;aaa&amp;quot;)}()go&nbsp;func()&nbsp;{fmt.Println(&amp;quot;bbb&amp;quot;)}()for{}}14.mysql&nbsp;一条查询语句&nbsp;执行流程15.mysql&nbsp;存储引擎以及各自特点16.mysql&nbsp;如果一行数据大小为1KB(主键聚簇的树)&nbsp;,&nbsp;那么能存储多少数据(三层b+树,&nbsp;我感觉得看索引的大小,但是面试官叫我算出来&nbsp;也不给索引到底多大)17.redis常用数据类型&nbsp;平时使用什么18.&nbsp;redis的zset底层数据结构&nbsp;&nbsp;&nbsp;hashmap扩容机制19.kafka为什么吞吐量能那么大20.redis实现分布式锁手撕&nbsp;对于无序的切片数组,&nbsp;开辟若干个协程进行查询指定数的操作,&nbsp;查询到&nbsp;使用context的cancel进行子线程的销毁&nbsp;超时则直接销毁所有协程叫我反问&nbsp;但是不想反问了
查看20道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务