非hot100的力扣算法题

1004. 最大连续1的个数 III

思路:维护一个滑动窗口,保证其窗口内的0不大于k

java 复制代码
class Solution {
    public int longestOnes(int[] nums, int k) { 
        int left=0;
        int n=nums.length;
        int lsum=0, rsum=0;
        int ans=0;//
        for(int right=0; right<n; right++){
            rsum+=1-nums[right];//起始点到右指针之间的0的个数
            while(rsum-lsum>k){
                lsum+=1-nums[left];//左指针之前的0个数
                left++;
            }
            ans =Math.max(ans,right-left+1);//
        }
        return ans;
    }
}

92. 反转链表 II

代码步骤:先设置一个dummyNode

通过循环找到起始点left的前一节点

开始left-right次反转

java 复制代码
//思路,先有一个prev指向left节点,然后再进行反转
class Solution {
    public ListNode reverseBetween(ListNode head, int left, int right) {
        ListNode dummy= new ListNode(-1);
        dummy.next=head;
        ListNode prev=dummy;

        for(int i=0;i<left-1;i++){
            prev=prev.next;//先到left节点的前一个节点
        }

        ListNode curr=prev.next;
        ListNode next;
        for(int i=0;i<right-left;i++){
            next=curr.next;
            curr.next=next.next;
            next.next=prev.next;
            prev.next=next;
        }
        return dummy.next;
    }
}

142. 重排链表

中点-翻转-穿插merge

java 复制代码
class Solution {
    public void reorderList(ListNode head) {
        ListNode slow=head;
        ListNode fast=head;
        while(fast.next!=null && fast.next.next!=null){
            slow=slow.next;
            fast=fast.next.next;
        }
        ListNode mid=slow;
        ListNode l2=mid.next;
        mid.next=null;
        l2=reverseList(l2);
        ListNode l1=head;
        mergeList(l1,l2);
        //return head;
    }
    public ListNode reverseList(ListNode node){
        ListNode curr=node;
        ListNode prev=null;
        while(curr!=null){
            ListNode next=curr.next;
            curr.next=prev;
            prev=curr;
            curr=next;
        }
        return prev;//curr,想一想最后是curr=null就停止循环,此时的最后一个node是curr,所以头节点是prev

        
    }
    public void mergeList(ListNode l1,ListNode l2){
        while(l1!=null && l2!=null){
            ListNode l1_temp=l1.next;
            ListNode l2_temp=l2.next;
            l1.next=l2;
            l2.next=l1_temp;
            l1=l1_temp;//l1=l1.next;
            l2=l2_temp;//l2=l2.next;
        }

    }
}
相关推荐
CC数学建模3 小时前
2026第八届中青杯全国大学生数学建模竞赛C题:情绪维度耦合约束的脑电信号情绪识别 (1)完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模
Dillon Dong3 小时前
【风电控制】双馈风机网侧高低穿控制策略——从VrtCal信号处理到状态机逻辑的完整解析
算法·变流器·风电控制·dfig
下午写HelloWorld3 小时前
同态加密(Homomorphic Encryption, HE)
人工智能·算法·密码学·同态加密
CC数学建模3 小时前
2026第八届中青杯全国大学生数学建模竞赛B题:AI生成内容的质量评估与参数优化完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模
sheeta19983 小时前
LeetCode 每日一题笔记 日期:2026.06.04 题目:3751. 范围内总波动值 I
笔记·算法·leetcode
lightqjx3 小时前
【算法】数据结构_单调栈
数据结构·算法·单调栈
Promise微笑3 小时前
洞察无形:红外热像仪应用场景与高性价比之选
人工智能·物联网·算法
8Qi83 小时前
LeetCode 746:使用最小花费爬楼梯 —— 题解笔记
java·笔记·算法·leetcode·动态规划
pipo3 小时前
没雷达也能调 Nav2?我开源了一套仿真到实机复用的 ROS 2 3D LiDAR 导航工作空间
算法