首页 > 其他分享 >86 单链表的分解

86 单链表的分解

时间:2024-03-12 09:35:14浏览次数:14  
标签:单链 两个 指向 链表 分解 86 节点 指针

你说你会改变,但是你只是为了解决当时的冲突而讲的话。

给你一个链表头节点head和x,要求链表中所有小于x的节点都出现在大于或等于x的节点之前

例如:head = [1,4,3,2,5,2], x = 3;

输出:[1,2,2,4,3,5]

在合并两个链表的时候,是将两个链表合并成一个,拆分的时候,是将一个链表拆分成两个。这中间涉及了什么,你知道吗。

这道题的解题思路是使用两个链表,一个用来保存比x小的,一个用来保存比x大的,将原始链表遍历结束之后,小的那个链表的尾指针的next指向大的那个链表的虚拟头指针的next,这样就拼接起来整个链表了。

代码如下:

class Solution {
    /**
     * 思想:
     * 双指针,左指针指向数组最左侧的数据,右指针指向数组结尾
     * 循环结束的出口是两个指针相遇,也就是说这个算法是两个指针的方向不一样
     * 指针移动的条件是,如果左指针指向的数据对应的更高,就是height[left]<hight[right],左指针右移,反之右指针左移,这样可以保证面积更大
     * @param height
     * @return
     */
    public int maxArea(int[] height) {
        int left = 0;
        int right = height.length - 1;
        int maxArea = 0;

        while (left < right){
            int area = Math.min(height[left],height[right]) * (right - left);
            maxArea = Math.max(maxArea,area); // 取最大的

            if (height[left] < height[right]){
                left++;
            } else {
                right--;
            }

        }
        return maxArea;

    }
}

标签:单链,两个,指向,链表,分解,86,节点,指针
From: https://www.cnblogs.com/Jason-01011010/p/18067608

相关文章

  • 860. 柠檬水找零c
    优先找10块,因为5块更重要。boollemonadeChange(int*bills,intbillsSize){intcash[21]={0};for(inti=0;i<billsSize;i++){if(bills[i]==5){cash[5]++;}elseif(bills[i]==10){cash[5]--;cash[10]++;......
  • P2866 [USACO06NOV] Bad Hair Day S
    原题链接题解1.倒序求2.求每个点前有多少高度比自己小的3.高度函数图像是有升有降的,由于要求比自己小的,在求完之后,我们把所有点前比自己小的点缩起来放到自己身上,然后把那些点删掉,再插入自己这样序列就变成了降序,遍历的时候也只需要遍历那些降序点code#include<bits/stdc++......
  • 探索数据结构:单链表的实战指南
    ✨✨欢迎大家来到贝蒂大讲堂✨✨......
  • P8630 [蓝桥杯 2015 国 B] 密文搜索
    网站:https://www.luogu.com.cn/problem/P8630代码如下:主要是用了map的思想#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<string>#include<string.h>#include<iomanip>#include<map>#incl......
  • C 语言整数单链表的表示和实现 数据结构课程设计报告
     数据结构课程设计报告专业名称:计算机科学与技术 课程名称:数据结构        实训题目:整数单链表的表示和实现                           实训环境:C语言实现(DevC++)                    ......
  • 快速制定、分解、落地OKR的框架,建议你认真看!
    制定OKR(ObjectivesandKeyResults,目标与关键成果)并没有一套固定的公式,因为每个组织、团队或项目的具体情况和目标都是独特的。然而,有一些通用的步骤和考虑因素可以帮助你制定有效的OKR。以下是一个指导性的框架:一、明确组织或团队的战略目标确定长期和短期目标:明确组织或团......
  • P8686 [蓝桥杯 2019 省 A] 修改数组
    备赛蓝桥杯和icpc的习题:一道并查集的题目>#include<iostream>>#include<vector>>#include<algorithm>>#include<math.h>>#include<string>>#include<string.h>>#include<iomanip>>#include<map>&g......
  • P4863 题解
    Solution为了方便,我们定义\(f_n=\sum_{i=1}^{n}\sum_{j=i}^{n}\lfloor\frac{i}{j}\rfloor\times(-1)^j\)。于是答案即为\(f_b-f_{a-1}\)。观察到如果我们直接计算这个式子而不做丝毫变形的话时间复杂度是\(O(n^2)\)的。考虑把先枚举\(j\),计算\(j\)的贡献。此时就有......
  • 耳分解、双极定向和 P9394 Solution
    耳分解设无向图\(G'(V',E')\subsetG(V,E)\),简单路径或简单环\(P:x_1\to\dots\tox_k\)被称为\(G\)关于\(G'\)的耳,当且仅当其满足\(x_1,x_k\inV',x_2,x_3\dotsx_{k-1}\not\inV'\)。如果\(P\)是简单路径,那么\(P\)称为开耳。下面记树上\(x,y\)之间的路......
  • P8386 [PA2021] Od deski do deski
    P8386[PA2021]Oddeskidodeski挺奇怪的一个转移式,还是套路看少了一开始想到的是分治,像卡特兰数那样求但是发现两端相同这个限制的去重不好处理,没法划分子问题就比如样例的\(4~2\),显然包含\(1~1~2~2\)这种情况当我们求\(6~2\)时,如果划分成\(4+......