北京的建设网站公司,系部网站建设,企业网站做百度小程序,网站开发建设企业80.删除有序数组重复项II 给你一个有序数组 nums #xff0c;请你 原地 删除重复出现的元素#xff0c;使得出现次数超过两次的元素只出现两次 #xff0c;返回删除后数组的新长度。 不要使用额外的数组空间#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的…80.删除有序数组重复项II 给你一个有序数组 nums 请你 原地 删除重复出现的元素使得出现次数超过两次的元素只出现两次 返回删除后数组的新长度。 不要使用额外的数组空间你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 思路:和删除有序数组的重复项1很相似1是不允许有两个一样的元素而2是不允许有三个一样的元素这就需要额外定义一个len来管理长度问题了如果出现两个以上相等的元素便不会进入if语句中不会更改nums数组。
class Solution {
public:int work(vectorint nums){int len0;for(int i0;inums.size();i){if(len2||nums[len-2]!nums[i]){nums[len]nums[i];}}return len;}int removeDuplicates(vectorint nums) {int reswork(nums);return res;}
}; 189.轮转数组 给定一个整数数组 nums将数组中的元素向右轮转 k 个位置其中 k 是非负数。 这个是LeetCode的官方解答是通过额外的数组来进行轮转的首先定义一个额外数组然后将遍历原数组将元素放到正确的位置上最后用vector中的assign函数将额外数组的元素赋值到nums中。
class Solution {
public:void rotate(vectorint nums, int k) {int nnums.size();vectorint newArr(n);for(int i0;in;i){newArr[(ik)%n]nums[i]; //这是通过额外数组将每个元素放到正确位置}nums.assign(newArr.begin(),newArr.end());}
};
二、小米笔试
1.堆排序的最好最坏平均复杂度排序
最好最坏平均复杂度
2.HTTP的持久化连接 HTTP 的持久化连接也称为 HTTP keep-alive是一种在单个 TCP 连接上发送和接收多个 HTTP 请求和响应的技术。 一、作用与优势 减少连接建立的开销 在没有持久化连接的情况下每次 HTTP 请求都需要建立一个新的 TCP 连接而建立连接的过程包括三次握手等操作会消耗一定的时间和资源。使用持久化连接可以避免频繁地建立和关闭连接从而减少了连接建立的时间开销。 提高性能 由于减少了连接建立的次数整体的传输效率得到提高。特别是对于需要发送多个请求的场景如加载一个包含多个图片、脚本和样式表的网页持久化连接可以显著提高页面加载速度。 降低服务器负载 服务器不需要为每个请求都进行连接的建立和关闭操作减少了服务器的资源消耗和处理负担能够更好地处理大量并发请求。 二、工作原理 连接建立 当客户端发起第一个 HTTP 请求时会在请求头中包含一个支持持久化连接的标识例如 “Connection: keep-alive”。如果服务器也支持持久化连接它会在响应头中同样设置这个标识表示同意建立持久化连接。 此时TCP 连接在完成第一个请求和响应后不会立即关闭而是保持打开状态以便后续的请求和响应可以复用这个连接。 请求和响应复用连接 客户端可以在同一个连接上连续发送多个 HTTP 请求每个请求之间不需要等待连接的建立。 服务器接收到请求后依次处理并返回响应同样通过这个连接进行传输。 连接关闭 持久化连接不会一直保持打开状态有以下几种情况会导致连接关闭 客户端或服务器主动关闭连接客户端可以在请求头中设置 “Connection: close” 来表明本次请求后关闭连接服务器也可以在响应头中设置这个标识来通知客户端关闭连接。 超时如果在一定时间内没有任何请求或响应通过连接传输连接可能会因为超时而被关闭。这个超时时间可以由服务器或客户端配置。 错误情况如果在连接上发生了网络错误或其他异常情况连接可能会被关闭。 3.在首尾添加数据频繁的应用场景下可以使用带有尾指针的单链表来实现
4.aaababcaabbc 这个字符串的next数组
459.重复的子字符串 给定一个非空的字符串 s 检查是否可以通过由它的一个子串重复多次构成。 对于如何构建的前缀表要注意
class Solution {
public:void getNext(vectorint next,string s){//前缀表int j0;next[0]0;for(int i1;is.size();i){while(j0s[j]!s[i]){jnext[j-1];}if(s[i]s[j]){j;}next[i]j;}}bool repeatedSubstringPattern(string s) {vectorint next(s.size()1);getNext(next,s);int nums.size();if(next[num-1]!0num%(num-next[num-1])0){return true;}return false;}
};
5.在计算机中使用分页式管理来存储可以有效解决内存碎片的问题
6.在dubug中resume的作用 当程序在调试过程中被暂停例如通过设置断点或者遇到异常时使用 “resume” 指令可以让程序继续执行下去直到遇到下一个断点或者程序正常结束。 7.快速排序过程要牢记