列表重新排序——Leetcode系列(八)

LeetCode力扣-hot100系列(1) 虽然开始写力扣系列的文章的时候,我的hot100题已经刷了71道了,以及代码随想录上面的题也跟着刷。并且之前也做了大量的笔记,包含差不多5000行~8000行左右(还包含左神的数据结构中的题目)。为什么我只给了一个范围呢?因为一不小心把vscode中的整个工作区删了,并且一并连回收站也清理了。当我意识到这里面还有我的笔记的时候,我已经删干净了,连同我做完的一个项目(还没来得及放在gitee上)。上面的案例告诉我们一定要做备份!!! 阅读详情

Given a singly linked list L: L0→L1→…→Ln-1→Ln,
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…

You must do this in-place without altering the nodes' values.

For example,
Given {1,2,3,4}, reorder it to {1,4,2,3}.

My Answer


/**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public void reorderList(ListNode head) {
        if(head == null || head.next == null){
            return;
        }
        int total = 0;
        ListNode pivot = head;
        //count the number of nodes in the list
        while(pivot != null){
            pivot = pivot.next;
            total++;
        }
        int splitIndex = total / 2 + total % 2;
        pivot = head;
        int shiftTime = 0;
        //get the middle node in the list
        while(shiftTime < splitIndex){
            pivot = pivot.next;
            shiftTime++;
        }
        ListNode secondHead = pivot;
        pivot = pivot.next;
        secondHead.next = null;
        //reverse the second half of the list
        while(pivot != null){
            ListNode temp = pivot;
            pivot = pivot.next;
            temp.next = secondHead;
            secondHead = temp;
        }
        ListNode firstPivot = head;
        ListNode secondPivot = secondHead;
        //get the node from the first half and second half of the list one by one
        while(secondPivot != null){
            ListNode temp = secondPivot;
            secondPivot = secondPivot.next;
            temp.next = firstPivot.next;
            firstPivot.next = temp;
            firstPivot = temp.next;
        }
        if(firstPivot != null){
            firstPivot.next = null;
        }
    }
}

题目来源:https://oj.leetcode.com/problems/reorder-list/

YOLOv8安防监控实战:跌倒/闯入/徘徊实时检测(附TensorRT加速+声光报警部署代码) 精准性:针对跌倒/闯入/徘徊的行为特征优化,准确率达89.3%,误报率低于5次/天;实时性:TensorRT加速到50+FPS,报警延迟<1秒,满足安防“黄金响应时间”;低成本:无需专用AI芯片,RTX 3060或Jetson Orin就能跑,硬件成本比传统方案低60%;易部署:代码全开源,提供从模型训练到硬件联动的完整流程,2天即可搭起原型系统。如果你的安防监控还在“漏报误报”“响应慢”,建议先从跌倒检测的姿态过滤改起——用100张样本测试,再集成TensorRT加速,90%能看到明显改善。 阅读详情

相关推荐

【智慧城市】GIS数据获取-获取道路/水路数据

【GIS数据获取】获取道路/水路数据

qq_16599281的博客 4750

自我总结:Leetcode 148. 排序列表

Leetcode 148,链表的两种归并排序

weixin_51537461的博客 291

Java农产品质量溯源大数据管理系统源码

产品追溯基于“一物一码”从工厂生产环节至销售阶段,赋予产品唯一的数码,并关联产品名称、批号、生产时间等信息,建立包装关联关系,为后期产品的追溯、营销搭建信息基础。 农产品溯源,从原材料收购、生产、加工质检到包装运输、终端门店销售等环节追溯,可以保证产品质量,监管部门和消费者都可以查询产品信息。对生产进行层层把关、一旦发现问题、立即进行处理、提升产品质量。

xingchen优快云的博客 1805

leetcode#1331 整数数组 arr元素替换为它们排序后的序号

力扣#1331 题目描述:给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号。 序号代表了一个元素有多大。序号编号的规则如下: 序号从 1 开始编号。 一个元素越大,那么序号越大。如果两个元素相等,那么它们的序号相同。 每个数字的序号都应该尽可能地小。 解题思路:这题主要是对数组的序号进行了一些操作,那么我们就可以用哈希表来进行这个操作,哈希表就是有key和value组成的,并且查找的时间复杂度只有O(1),另外这道题涉及了很多操作,比如首先是一个排序,肯定不能直接对愿数组进行操作,不

weixin_43310928的博客 1350

VSCode 远程开发:实现服务器图形化界面(GUI)的高效操作指南

本文详细介绍了如何通过VSCode远程开发实现服务器图形化界面(GUI)操作,包括X11转发原理、完整配置指南和实战测试。通过安装Xming、配置SSH连接和服务器端设置,开发者可以高效地在本地显示远程GUI应用,提升开发效率。

weixin_29245767的博客 292

OSG三维渲染引擎编程学习之一百:“第十一章:OSG粒子” 之 “11.1 粒子的主要模块”

OSG;三维渲染引擎编程学习;第十一章:OSG粒子;11.1 粒子的主要模块

LuckyHanMo的博客 798

多级排序编程题

某公司要针对员工情况统一调薪,现有一个员工列表,包含姓名、职级、工作年限、工资信息。现要求将该列表按以下规则重新排序: 1、职级高的排在前面 2、若职级相同,按工资少的排前面 3、若工资相同,工作年限长的排前面 输入描述: 第一行输入一个整数n,表示员工列表中员工的人数 接下来的n行,分别输入员工的姓名、职级、工作年限和工资信息,各项信息用空格分隔 输出描述: 输出按要求重新排列的员工列表,每名员工信息(姓名、职级、工作年限和工资)占一行 示例 输入: 6 张三 3 3 3000

weixin_42968460的博客 9354

【AI应用实战-claude】在飞书上接入claudecode进行远程使用(十三)

本文介绍了三种将ClaudeCode接入飞书的方案,包括官方飞书CLI工具(推荐)、cc-connect中转工具和MCP协议集成。官方飞书CLI适合自动化办公场景,通过简单配置即可实现消息发送和文档管理;cc-connect适用于远程调用Claude功能,通过飞书群聊触发响应;MCP协议则适合开发者构建复杂工作流。文章提供了详细的操作步骤,并针对不同使用场景给出了选择建议。

1013

leetcode重新排列字符串

给你一个字符串 s 和一个 长度相同 的整数数组 indices 。 请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。 返回重新排列后的字符串。 package Algorithm; public class restoreString { public String restoreString(String s, int[] indices) { char[] list = new char[indices.length];

weixin_49131718的博客 218

把时间当成数据:SAP ABAP 里的 DATS/TIMS 与 DATN/TIMN,怎么选才不踩坑

SAP项目中日期时间字段的陷阱与优化 日期时间字段(DATS/TIMS)在SAP项目中看似简单却常引发事故,主要问题包括: 非法日期(如20201331)入库后,在月结、对账时爆发异常 空值被处理为00000000导致排序错误 ABAP提供两种处理方案: 经典类型DATS/TIMS:存储为字符格式,校验宽松易存脏数据 HANA原生类型DATN/TIMN:数据库级校验,写入即拦截非法值 优化建议: 在接口层和入库前进行严格校验 新项目优先使用DATN/TIMN类型 对遗留数据使用DATS_IS_VALID等函

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 184

Unreal5 从入门到精通之 如何实现 离线语音识别

本文介绍了如何使用离线语音识别插件 Offline Speech Recognition 进行本地语音转文本处理。该插件支持离线运行,用户可以通过下载并运行语言服务器(如 Vosk)来处理语音数据。文章详细说明了如何设置语言服务器、下载语言模型,并在虚幻引擎(UE)项目中配置麦克风和语音捕获。此外,还介绍了如何将 SoundWave 作为输入,以及如何通过节点将语音数据发送到语言服务器进行处理。最后,提供了相关文档链接以供进一步参考。

TxNet 905

406. 根据身高重建队列(力扣LeetCode)

排序完的people: [[7,0], [7,1], [6,1], [5,0], [5,2],[4,4]]因此 [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] 是重新构造后的队列。输入:people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]输入:people = [[6,0],[5,0],[4,0],[3,2],[2,2],[1,4]]插入[4,4]:[[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]

m0_73841621的博客 1389

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LeetCode刷题-重新排序得到2的幂

前言说明 算法学习,日常刷题记录。 题目连接 重新排序得到2的幂 题目内容 给定正整数N,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。 如果我们可以通过上述方式得到2的幂,返回true;否则,返回false。 示例1: 输入:1 输出:true 示例2: 输入:10 输出:false 示例3: 输入:16 输出:true 示例4: 输入:24 输出:false 示例5: 输入:46 输出:true 提示: 1 <= N <= 10^9 分析过程

纯洁的博客 670

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

332. 重新安排行程(力扣LeetCode)

拿题目中的示例为例,输入: [[“MUC”, “LHR”], [“JFK”, “MUC”], [“SFO”, “SJC”], [“LHR”, “SFO”]] ,这是有4个航班,那么只要找出一种行程,行程里的机场个数是5就可以了。输入:tickets = [[“JFK”,“SFO”],[“JFK”,“ATL”],[“SFO”,“ATL”],[“ATL”,“JFK”],[“ATL”,“SFO”]]例如,行程 [“JFK”, “LGA”] 与 [“JFK”, “LGB”] 相比就更小,排序更靠前。

m0_73841621的博客 1374

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

力扣困难题,332. 重新安排行程

另一种有效的行程是 ["JFK","SFO","ATL","JFK","ATL","SFO"] ,但是它字典排序更大更靠后。假定所有机票至少存在一种合理的行程。且所有的机票 必须都用一次 且 只能用一次。别傻乎乎的手动排序啦,Java已经帮我们实现了,那就是PriorityQueue。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。请你对该行程进行重新规划排序。(肯尼迪国际机场)出发的先生,所以该行程必须从。相比就更小,排序更靠前 ,得出要根据字典排序。比如例二,JFK->SFO,ATL。

2201_75927593的博客 554

【困难】力扣算法题解析LeetCode332:重新安排行程

LeetCode 332题要求从固定起点JFK出发,重新安排机票行程,形成一条使用所有机票且字典序最小的欧拉路径。解题采用Hierholzer算法,通过构建图(使用最小堆存储邻居机场确保字典序),结合栈模拟DFS和后序处理,高效求解。Java实现中利用HashMap建图,PriorityQueue排序邻居,ArrayDeque作栈,LinkedList收集结果,确保时间复杂度O(n log n)。

ylumwd的博客 1068

LeetCode 869.重新排序得到 2 的幂:哈希表+排序(一次初始化)

LeetCode 869.重新排序得到 2 的幂:哈希表+排序(一次初始化) 给定正整数 n ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。 如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。

<font color="Pink">Tisfy的博客</font> 540

day27 力扣332.重新安排行程 力扣51. N皇后 力扣37. 解数独 力扣455.分发饼干 力扣376. 摆动序列 力扣53. 最大子序和

给你一份航线列表tickets,其中表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。所有这些机票都属于一个从JFK(肯尼迪国际机场)出发的先生,所以该行程必须从JFK开始。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。假定所有机票至少存在一种合理的行程。且所有的机票 必须都用一次 且 只能用一次。另一种有效的行程是 ["JFK","SFO","ATL","JFK","ATL","SFO"] ,但是它字典排序更大更靠后。toi第二道困难题,呃呃··· 好难。

2401_87983916的博客 981

力扣的排序链表解法(Python3)

力扣的排序链表解法(Python3) 题目描述: 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 来源:力扣(LeetCode)...

chutu2018的博客 368

leetcode (力扣) 869. 重新排序得到 2 的幂 (哈希表)

题目在这:https://leetcode-cn.com/problems/reordered-power-of-2/ 思路分析: 题目不难,解题的关键在于理解什么叫 “可以将数字重新排序”。 比如数字 32134 和 24313 两者可以通过重新排序得到相同的字符串吗?显然是可以的,因为两个都是由 124 和两个3组成。 基于上面的思路,我们可以使用哈希表存数字出现的个数,对比个数即可知道两个字符串是否在无视顺序的情况下能够相等。 顺带说一下,这里要求的是 2的N次方,我一开始就是看成N的2此方了。。。。

深度不学习!!的博客 199

【力扣】排序链表

给你链表的头结点 head ,请将其按排列并返回。

代码兴国 569

算法学习——LeetCode力扣回溯篇4(332. 重新安排行程、51. N 皇后、37. 解数独)

算法学习——LeetCode力扣回溯篇4(332. 重新安排行程、51. N 皇后、37. 解数独)

拉依达不拉跨的博客 1083

力扣【148】排序链表

题目: 给你链表的头结点head,请将其按升序排列并返回排序后的链表。 示例 : 输入:head = [4,2,1,3] 输出:[1,2,3,4] 题解: import java.util.*; class ListNode { int val; ListNode next; ListNode() {} ListNode(int val) { this.val = val; } ListNode(int val, ListNode n...

qq1922631820的博客 211

按奇偶排序数组 力扣

每日一题:4.22 来自力扣 :按奇偶数组排序问题 给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。 你可以返回满足此条件的任何数组作为答案。 示例: 输入:[3,1,2,4] 输出:[2,4,3,1] 输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。 思路:定义两个新的数组分别来存放偶数和奇数,两个计数器分别记录两...

weixin_46558883的博客 183

Leetcode 023 合并K个排序列表 思路详解+反思易错 Python实现

本人一直在努力地积累Leetcode上用Python实现的题,并且会尽力讲清每道题的原理,绝不像其他某些博客简略地带过。如果觉得讲的清楚,欢迎关注。合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入: [   1-&gt;4-&gt;5,   1-&gt;3-&gt;4,   2-&gt;6 ] 输出: 1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4-...

weixin_41958153的博客 331
上一篇: 使用迭代法对二叉树进行前序遍历——Leetcode系列(七)
下一篇: 查找列表是否含有环(一)——Leetcode系列(九)
Hooting
博客等级 码龄17年 11粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值