首页 > 其他分享 >day10

day10

时间:2022-09-30 20:55:12浏览次数:47  
标签:ListNode cur int pred day10 节点 指针

双指针总结

数组 移除某一个元素
image
快慢一起向后遍历 ,遇到要删除的元素。快先走 ,然后快指针直接覆盖要删除的元素

class Solution {
    public int removeElement(int[] nums, int val) {
        // 快慢指针![image](uploading...)
        int slowIndex = 0;   //快指针是用来找数 慢指针才是用来保存删除某个数之后的数组
        for (int fastIndex = 0; fastIndex < nums.length; fastIndex++) {
            if (nums[fastIndex] != val) {
                nums[slowIndex] = nums[fastIndex];
                slowIndex++;
            }
        }
        return slowIndex;
    }
}

反转字符串或者数组问题image

一头一尾指针
头尾向中间间遍历,并交换,直至之间相遇

字符串 中某一种字符 替换,剑指offer P51

用双指针 比较麻烦 ,直接使用StringBulider 可变长数组,从头遍历过去O(n)

链表的反转

//双指针法
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode cur=head;  //cur 头结点开始   pred  空节点开始
        ListNode pred=null;


        while(cur!=null){
            ListNode temp=cur.next;      //temp保存  cur之后的指向 防止断连
            cur.next=pred;              //反转cur 的指向 反转链表
            pred=cur;                   //pred  到下一个位置 也就是 cur
            cur=temp;           //cur 到下一个位置    也就是 一开始 temp的位置
        }
        return  cur;    //经过遍历之后 cur 指向了null 最后终止循环, 所以  头节点应该是pred

//反转一个节点的顺序 :
//  1:先把该节点的下一个节点保存
//  2:反转该节点的方向
//  3: 该节点的前一个指针(先移动pred 再移动cur) 和当前指针向后移动一位  遍历到下一个节点
    }
}

标签:ListNode,cur,int,pred,day10,节点,指针
From: https://www.cnblogs.com/wdnmdp/p/16746225.html

相关文章

  • Day10
    方法重写publicclassB{  public voidtest(){    System.out.println("B=>test()"); }}//重写都是方法的重写,与属性无关publicclassAextendsB{......
  • 消息队列 day10
    RabbitMQ即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将Rocket......
  • 前端Day10
    视口(viewport):浏览器显示页面内容的屏幕区域。分为布局视口、视觉视口、理想视口。布局视口: 视觉视口: 理想视口: meta视口标签:width=device-width:布局视口宽......
  • Day10-CSS
    图片整合,精灵图,雪碧图:什么是图片整合: 1.把小的图片整合到一个大的图片上为什么要图片整合: 优点: 较少对服务器的请求次数 减少图片的内存 增加页面的加载速度 ......