首页 > 其他分享 >《剑指offer》day11

《剑指offer》day11

时间:2022-10-16 09:44:16浏览次数:46  
标签:head ListNode cur val offer int 复杂度 day11

删除链表的节点

题目描述

image

思路

基本操作

代码实现

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode deleteNode(ListNode head, int val) {
        ListNode pre=null,cur=head;
        while(cur!=null){
            if(cur.val!=val){
                pre=cur;
                cur=cur.next;
            }else{
                if(pre==null){
                    head=cur.next;
                }else{
                    pre.next=cur.next;
                }
                break;
            }
        }
        return head;
    }
}

复杂度分析

时间复杂度

O(N)

空间复杂度

O(1)

反思不足

思路

对删除节点是第一个节点的处理不熟练

题目描述

image

思路

双指针

双指针,让前一个指针与后一个指针始终保持我们需要的距离,让后一个指针寻找最后一个元素

对于这类需要备份一个节点的题,双指针尤其好用,找到两个指针间的联系即可

代码实现

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode getKthFromEnd(ListNode head, int k) {
        if(head==null){
            return head;
        }
        ListNode left=head,right=head;
        int cth=1;
        while(cth<k){
            right=right.next;
            cth++;
        }
        while(right.next!=null){
            right=right.next;
            left=left.next;
        }
        return left;
    }
}

复杂度分析

时间复杂度

O(N)

空间复杂度

O(1)

反思不足

思路

一点就通,这次还算OK

标签:head,ListNode,cur,val,offer,int,复杂度,day11
From: https://www.cnblogs.com/zhouj-learn/p/16795661.html

相关文章

  • 剑☞offer 替换空格
    请实现一个函数,把字符串s中的每个空格替换成"%20"。例子:输入:s="Wearehappy."输出:"We%20are%20happy."代码参考点击查看代码classSolution{public:st......
  • 代码随想录 反转字符串(LeetCode 344) ,反转字符串II(LeetCode 541),替换空格(剑指offer
    反转字符串题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组char[]的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用......
  • 剑指offer题解
    一,常见数据结构1,数组3-找出数组中重复的数字4-二维数组中的查找5-替换空格29-顺时针打印矩阵leetcode989-数组形式的整数加法leetcode26-删除有序数组中的重复......
  • 《剑指offer》day09
    题目描述思路动态规划+自下而上记录每个元素对应的包含了当前元素的连续和的最大值,最后取一个全局最大的自下而上的话就没有必要保留,一边求一边更新即可递归的话也......
  • 《剑指offer》day08
    斐波那契数列题目描述思路动态规划+哈希表+递归动态规划维基百科定义:动态规划(英语:Dynamicprogramming,简称DP),是一种在数学、管理科学、计算机科学、经济学和生物......
  • 剑指 Offer 05. 替换空格
    请实现一个函数,把字符串 s 中的每个空格替换成"%20"。classSolution{public:stringreplaceSpace(strings){intlen=s.size();intcoun......
  • 剑指offer 38. 字符串的排列
    输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s="abc"输出:["abc","acb","bac","bca","cab","......
  • 剑指 Offer 22. 链表中倒数第k个节点
    题目描述:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的......
  • day11事件上
    事件事件名(内置的)执行对象(元素对象)处理函数(自定义函数)观察者(js的事件引擎)事件名的分类鼠标事件(鼠标触发)click单击事件dblclick双击事件mousedown按下mouseup......
  • 剑指Offer03.数组中重复的数字
    1.题目描述找出数组中重复的数字。在一个长度为n的数组nums里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复......