leetcode61. 旋转链表(java)

news2024/12/25 12:21:33

旋转链表

  • leetcode61. 旋转链表
    • 题目描述
  • 解题思路
  • 代码演示
  • 链表专题

leetcode61. 旋转链表

Leetcode链接:
https://leetcode.cn/problems/rotate-list/

题目描述

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

示例1:
在这里插入图片描述
输入:head = [1,2,3,4,5], k = 2
输出:[4,5,1,2,3]

示例2:
在这里插入图片描述
输入:head = [0,1,2], k = 4
输出:[2,0,1]

提示:
链表中节点的数目在范围 [0, 500] 内
-100 <= Node.val <= 100
0 <= k <= 2 * 109

解题思路

这题需要把链表变成一个环。然后从k的位置断开就是旋转后的链表。
步骤如下:
1.先用一个辅助指针,把链表走到最后一个节点,
并且记录链表的长度。将尾节点和头节点连接在一起。
2.如果k 是链表长度的整数倍。那么翻转后,还是原链表,直接返回头节点
3.如果不是整数倍,int ans =n - k % n;(n代表链表的长度。)
4.再走ans 步,从这里断开链表,返回下一个节点,就完成了。

代码演示

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode rotateRight(ListNode head, int k) {
        if(k == 0 || head == null || head.next == null){
            return head;
        }
        //记录链表的长度
        int n = 1;
        ListNode cur = head;
        while(cur.next != null){
            n++;
            cur = cur.next;
        }

       int ans = n - k % n;
       //
       if(ans == n){
           return head;
       }
       cur.next = head;
       while(ans > 0){
           cur = cur.next;
           ans--;
       }    
       ListNode last = cur.next;
       cur.next = null;
       return last;
    }
}

链表专题

删除排序链表中的重复元素

-递归实现翻转链表

leetcode24. 两两交换链表中的节点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/628277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅析 xml 数据格式文件

浅析 xml 数据格式文件 xml ( Extensible Markup Language ) 全称 -> 可拓展的标记语言&#xff1b; xml文件的主要用途&#xff1a;xml文件主要用于数据的 传输 和 存储&#xff0c;并不是展示&#xff1b; xml标签与html的区别&#xff1a;节点的标签使用方式和 html 十分…

【产品经理】企业的产品增长之路

英特尔前CEO安迪格鲁夫有本书叫做《Only the Paranoid Survive》&#xff0c;全文的中心思想是警示他人&#xff0c;要居安思危&#xff0c;唯有打破常规&#xff0c;不拘泥于现状才能生存。 一、为何企业都在关注增长&#xff1f; 1. 诺基亚的贱卖 13年市值曾位居全球上市公…

HNU-操作系统OS-作业1(4-9章)

这份文件是OS_homework_1 by计科2102 wolf 202108010XXX 文档设置了目录,可以通过目录快速跳转至答案部分。 第四章 4.1用以下标志运行程序:./process-run.py -l 5:100,5:100。CPU 利用率(CPU 使用时间的百分比)应该是多少?为什么你知道这一点?利用 -c 标记查看你…

Spring中如何获取Bean方法上的自定义注解

文章目录 背景描述场景复现问题追踪解决方案扩展思考 背景描述 项目中需要扫描出来所有 标注了自定义注解A的Service里面标注了自定义注解B的方法 来做后续处理。 基本的思路就是通过Spring提供的ApplicationContext#getBeansWithAnnotation反射 来实现。 但是&#xff0c;随…

【Spring】核心与设计思想

哈喽&#xff0c;哈喽&#xff0c;大家好~ 我是你们的老朋友&#xff1a;保护小周ღ 谈起Java 圈子里的框架&#xff0c;最年长最耀眼的莫过于 Spring 框架啦&#xff0c;如今已成为最流行、最广泛使用的Java开发框架之一。不知道大家有没有在使用 Spring 框架的时候思考过这…

11111111111

def cosine_similarity(vector_a, vector_b): “”" 计算两个向量之间的余弦相似度 :param vector_a: 向量 a :param vector_b: 向量 b :return: distance “”" vector_a np.mat(vector_a) vector_b np.mat(vector_b) num float(vector_a * vector_b.T) denom n…

华为OD机试真题 Java 实现【预定酒店】【2022Q4 100分】

一、题目描述 放暑假了,小明决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为n的 数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店 (n>=k>0) ,并由低到高打印酒店的价格。 二、输入描述 第一行: n,k,x 第二行: A[o] A[1] A[2]…A[n-1] 三…

djiango orm简单实现增删改查

目录 一、配置数据库1.1 在settings.py文件中找到DATABASES &#xff0c;配置数据库连接&#xff0c;这里用的是mysql 二、切换操作数据库的模块三、 创建一个app并注册3.1创建一个app3.2 注册app 三、在app1定义模型类四、迁移数据库&#xff0c;使用以下命令&#xff0c;生成…

Android修改aar并重新打包

目录 一.修改 aar 需要用到的工具&#xff08;就一个工具&#xff0c;使用方式非常简单&#xff0c;别担心&#xff09; 二.修改 aar 代码层业务逻辑 三.修改 aar layout 布局文件 四.附上recyclerview aar修改工程源码 一.修改 aar 需要用到的工具&#xff08;就一个工具&…

MKS SERVO4257D 闭环步进电机_系列8 CAN通讯示例

第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口&#xff0c;支持MODBUS-RTU通讯协议&#xff0c;内置高效FOC矢量算法&#xff0c;采用高精度编码器&#xff0c;通过位置反馈&a…

AD19操作注意事项及信息

直接在PCB编辑界面添加差分对&#xff08;差分布线&#xff09; 1.PCB边界界面Panels菜单调出PCB界面 2.选择框中信息&#xff0c;点击添加差分对即可&#xff0c;然后利用交互式差分对布线命令进行布线操作。&#xff08;前提设置好差分布线规则&#xff09; 过孔&#xff1a…

7年经验之谈 —— 如何进行渗透测试以提高软件安全性?

对于各种规模的企业和组织来说&#xff0c;软件安全是一个至关重要的问题。随着网络攻击越来越复杂&#xff0c;软件中的漏洞越来越多&#xff0c;确保你的软件安全比以往任何时候都更重要。提高软件安全性的一个有效方法是渗透测试&#xff08;penetration testing&#xff09…

6月9号软件资讯更新合集....

Vivaldi 6.1 发布&#xff0c;可绕过微软限制使用 Bing Chat 最新版本的 Vivaldi 可在桌面端伪装成 Edge&#xff0c;使其用户受益&#xff0c;并为工作空间和标签增加了更多的功能。 支持微软 Bing Chat Vivaldi 是建立在 Chromium 开源项目之上的。它与 Edge 和 Chrome 使用…

Android kotlin序列化之Parcelable详解与使用(二)

一、介绍 注解序列化篇&#xff1a;Android kotlin序列化之Parcelize详解与使用_蜗牛、Z的博客-CSDN博客 通过上一篇注解序列化&#xff0c;我们已了解的kotlin的序列化比Java复杂了很多。而且有好多问题&#xff0c;注解虽好&#xff0c;但是存在一些问题。 一般在大型商业…

【Flutter】如何更改 Flutter 应用的启动图标

文章目录 一、前言二、什么是启动图标三、为什么我们需要更改启动图标四、如何更改启动图标五、注意事项六、总结 一、前言 欢迎来到 Flutter 的世界&#xff01;在这篇文章中&#xff0c;我们将探索 Flutter 的一些基础知识。但是&#xff0c;你知道吗&#xff1f;这只是冰山…

爬虫一般怎么解决加密问题?

① 对于网页端来说通常加密的算法是写在 js 代码里的&#xff0c;所以首先你要对 js 语言有所了解。 至少知道 js 基础的内容&#xff0c;其次找到对应 js 加密代码&#xff0c;然后找出关键的函数。 把 js 代码在 node.js 环境进行调试&#xff0c;最后在 Python 环境下利用…

Goby 漏洞发布|maxView Storage Manager 系统 dynamiccontent.properties.xhtml 远程代码执行漏洞

漏洞名称&#xff1a;maxView Storage Manager 系统 dynamiccontent.properties.xhtml 远程代码执行漏洞 English Name&#xff1a;maxView Storage Manager dynamiccontent.properties.xhtml RCE CVSS core: 9.8 影响资产数&#xff1a;1465 漏洞描述&#xff1a; maxVie…

C++debug-centos-ubuntu-vscode

1.centos下安装VSCODE 在linux系统(centOS7)中安装VSCode(Visual Studio Code)_centos vscode安装_沈醉不知的博客-CSDN博客 pacman -S code2.ubuntu下安装VSCODE 与windows下一样。 3.windows 调试 下载安装vscode cmake https://cmake.org/download GDB:UNIX及UNIX-…

php7.4生产环境压力测试CPU占用100%解决方案

最近开发了一个项目&#xff0c;客户要求压力测试&#xff0c;测试时发现并发量大时php-fpm占用cpu一直100%,调整了php的最大进程数pm.max_children&#xff0c;优化了程序效果不明显。后面使用了opcache&#xff0c;cpu使用率一下降到20%左右。 什么是opcache&#xff1f;下面…

网络渗透攻击与加固

目录 一、内网渗透模拟攻击 1.1 综合扫描工具 1.1.1 X-scan 1.1.2 Zenmap 1.2 内网渗透模拟流程 二、Net命令 2.1 net user 2.1.1 功能 2.1.2 用法 2.2 net localgroup 2.2.1 功能 2.2.2 用法 2.3 net share 2.3.1 功能 2.3.2 用法 2.4 net use 2.4.1 功能 2…