首页 > 其他分享 >9.5LeetCode

9.5LeetCode

时间:2024-09-05 18:51:22浏览次数:7  
标签:请求 nums int 连接 数组 9.5 next LeetCode

80.删除有序数组重复项II

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

 思路:和删除有序数组的重复项1很相似,1是不允许有两个一样的元素,而2是不允许有三个一样的元素,这就需要额外定义一个len来管理长度问题了,如果出现两个以上相等的元素,便不会进入if语句中,不会更改nums数组。

class Solution {
public:
    int work(vector<int>& nums){
        int len=0;
        for(int i=0;i<nums.size();i++){
            if(len<2||nums[len-2]!=nums[i]){
                nums[len++]=nums[i];
            }
        }
        return len;
    }
    int removeDuplicates(vector<int>& nums) {
        int res=work(nums);
        return res;
    }
};

 189.轮转数组

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 

 这个是LeetCode的官方解答,是通过额外的数组来进行轮转的,首先定义一个额外数组,然后将遍历原数组将元素放到正确的位置上,最后用vector中的assign函数,将额外数组的元素赋值到nums中。  

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        int n=nums.size();
        vector<int> newArr(n);
        for(int i=0;i<n;i++){
            newArr[(i+k)%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(vector<int>& next,string& s){//前缀表
        int j=0;
        next[0]=0;
        for(int i=1;i<s.size();i++){
            while(j>0&&s[j]!=s[i]){
                j=next[j-1];
            }
            if(s[i]==s[j]){
                j++;
            }
            next[i]=j;
        }
    }
    bool repeatedSubstringPattern(string s) {
        vector<int> next(s.size()+1);
        getNext(next,s);
        int num=s.size();
        if(next[num-1]!=0&&num%(num-next[num-1])==0){
            return true;
        }
        return false;
    }
};

5.在计算机中使用分页式管理来存储可以有效解决内存碎片的问题

6.在dubug中resume的作用

当程序在调试过程中被暂停(例如通过设置断点或者遇到异常)时,使用 “resume” 指令可以让程序继续执行下去,直到遇到下一个断点或者程序正常结束。

7.快速排序过程要牢记

标签:请求,nums,int,连接,数组,9.5,next,LeetCode
From: https://blog.csdn.net/m0_62956971/article/details/141928894

相关文章

  • 9.5 上午 becoder 模拟赛总结 & 题解
    T1文本编辑器说实话,看到题目的第一瞬间,我还以为gm第一道就放了平衡树。一道链表的模板题,当然愿意也可以用平衡树写,不多说了,直接放代码(100pts):#defineN1000005chars[N],t[N];intnow,pre[N],nxt[N];intmain(){scanf("%s%s",s+1,t+1);intn=strlen(s+1);......
  • 代码随想录算法训练营|Day07 LeetCode 344.反转字符串 ,541.反转字符串||,卡玛网54.替换
    344.反转字符串344.反转字符串-力扣(LeetCode)classSolution{public:voidreverseString(vector<char>&s){intlens=s.size();intright,left;if(lens%2!=0)//奇数个{right=lens/2+1;left=l......
  • 213. 打家劫舍 II(leetcode)
    https://leetcode.cn/problems/house-robber-ii/description/灵神题解:https://leetcode.cn/problems/house-robber-ii/solutions/2445622/jian-ji-xie-fa-zhi-jie-diao-yong-198-ti-qhvri/classSolution{publicintrob(int[]nums){//f[i]表示前i个房屋选......
  • 139. 单词拆分(leetcode)
    https://leetcode.cn/problems/word-break/description/classSolution{publicbooleanwordBreak(Strings,List<String>wordDict){//思路较为巧妙,和传统背包定义不同//f[i]表示长度为i的字符串能否被wordDict里的单词凑成//状态转义方......
  • LeetCode刷题—数组
    一:数组操作1、数组:在连续的内存空间当中;存储一组相同类型的元素2、元素和索引:数组的索引下标从0开始3、数组的访问和数组的搜索(1)数组的访问a=[1,2,3]a[1]=2#数组的访问;通过下标索引进行访问(2)数组的搜索a=[1,2,3]foriina:print(i)4、数组的四种方法访问0(1)......
  • 2024.9.4 leetcode169 多数元素 (C++)
    题面https://leetcode.cn/problems/majority-element/description/ 解答一开始想得比较暴力,直接把对应数字当数组下标,遇到对应数字,数组++,但不知道怎么处理-10^9~10^9的数据大小,后来想了一个办法,那就是先排序,再求连续的个数,个数大于n/2的时候,return结果。太久没接触C++语法、......
  • 【数据结构和算法实践-树-LeetCode100-判断是否是相同的树】
    数据结构和算法实践-树-LeetCode100-判断是否是相同的树题目MyThought代码示例JAVA-8题目给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例输入:p=[1,2,3],q=[1,2......
  • 【数据结构和算法实践-链表-LeetCode23-合并K个有序数组】
    合并K个有序数组题目MyThought代码示例JAVA-8题目合并K个有序数组MyThought一、将ListNode放入PriorityQueue中1.1、设置PriorityQueue的比较器规则1.2、将ListNode[]放入priorityQueue二、再将数据依次弹出放到ListNode中代码示例JAVA-8publicListNod......
  • 代码随想录算法训练营|Day06 LeetCode 242.有效的字母异位词,349.两个数组的交集,202.快
    理论知识哈希表是根据关键码的值而直接进行访问的数据结构,一般用来快速判断一个元素是否出现在集合里映射——哈希函数哈希碰撞线性探测法拉链法常用的哈希结构数组set(集合)map(映射)242.有效的字母异位词242.有效的字母异位词-力扣(LeetCode)classSolution{......
  • 算法练习题10:leetcode76最小覆盖子串-滑动窗口
    目录题目题目描述约束条件解决思路代码getOrDefault(c,0) 方法方法签名参数返回值示例getOrDefault 与 get 的主要区别Integer 题目题目描述给定两个字符串s和t,请你在字符串s中找到包含t中所有字符的最小子串。要求:        如果 s ......