• 力扣刷题(2022-6-28)


    反转链表

    给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

    示例 1:


    输入:head = [1,2,3,4,5]
    输出:[5,4,3,2,1]
    示例 2:


    输入:head = [1,2]
    输出:[2,1]
    示例 3:

    输入:head = []
    输出:[]

    如果单纯的将第1个结点指向NULL,将第2个结点指向第1个结点的地址,那么我们就会丢失第3个结点的地址,从而无法让第3个结点指向第2个结点。所以需要三个指针。

    1. ListNode* reverseList(ListNode* head) {
    2. ListNode *p =nullptr;
    3. ListNode *tmp;
    4. while(head){
    5. tmp = head->next;
    6. head->next = p;
    7. p = head;
    8. head = tmp;
    9. }
    10. return p;
    11. }

    无重复字符的最长字串

    给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

    示例 1:

    输入: s = "abcabcbb"
    输出: 3 
    解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
    示例 2:

    输入: s = "bbbbb"
    输出: 1
    解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
    示例 3:

    输入: s = "pwwkew"
    输出: 3
    解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
         请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

    指定左右位置,将左指针向右移动一格,表示开始枚举下一个字符作为起始位置,然后我们可以不断地向右移动右指针,但需要保证这两个指针对应的子串中没有重复的字符。在移动结束后,这个子串就对应着以左指针开始的不包含重复字符的最长子串。

    1. public int lengthOfLongestSubstring(String s) {
    2.         int len = s.length();
    3. if(len == 0) return 0;
    4. int start = 0 , end = 0;
    5. int ret = 0;//子串长度
    6. while(end < len){
    7. for(int j = start ; j < end ; j++){
    8. if(s.charAt(j) == s.charAt(end)){//当前end下标的字符与下标为j的字符一样时
    9. ret = Math.max(ret , end - start);//求最大子串长度
    10. start = j + 1;//滑动start到重复字符的后面即可
    11. }
    12. }
    13. end++;//没有出现重复字符,那么end后移,加长窗口长度继续新一轮的遍历比较
    14. }
    15. return Math.max(ret , end - start);//再进行最后一次比较
    16.     }

  • 相关阅读:
    FPGA实现AXI4总线的读写_如何写axi4逻辑
    PyG-GCN-Cora(在Cora数据集上应用GCN做节点分类)
    Vue3+ts+Vite项目使用mockjs来模拟数据
    批量取redis keyvalue和批量删除key
    flutter 安装 环境变量 andriod studio
    Docker的安装
    我喜欢这种平平淡淡的生活!
    LinkedBlockingDeque
    【计算机网络】数据链路层重点协议
    ssm+vue的OA办公系统(有报告)。Javaee项目,ssm vue前后端分离项目。
  • 原文地址:https://blog.csdn.net/m0_64006869/article/details/125507363