1.5将单链表向右旋转k个结点

Objective-C实现将列表向右旋转 k 个位置算法(附完整源码) 阅读详情

1.题目

如何将单链表向右旋转k个位置。
给定单链表1->2->3->4->5->6->7, k = 3,那么旋转后的单链表变为5->6->7->1->2->3->4

2.解法

public class Sort {
    /**
     * 功能描述: 根据k的个数,将链表向右旋转k个位置
     * 输入参数: 链表头结点
     * 利用了寻找倒数第k个结点的知识
     */

    public static void rightRotate(Node head, int k){
        if(head == null || head.next == null || k < 1){
            return;
        }

        // 前部分有k+1个结点,后半部分有k个结点
        // 所以使用快慢指针移动是可以的,之间维持k个结点
        Node slow, fast, tmp;
        slow = fast = head.next;

        // 1.先将fast移动到第k个位置
        for(int i = 1; i <= k; i++){
            // 如果结点为 null,说明没有第k个位置, 说明已经超过链表长度
            if(fast.next != null){
                fast = fast.next;
            } else {
                return;
            }
        }

        // 2.slow和fast同步移动,fast移动到尾结点时,slow正好
        while(fast.next != null){
            slow = slow.next;
            fast = fast.next;
        }

        // 3.开始连接结点
        tmp = slow.next;
        slow.next = null;
        fast.next = head.next;
        head.next = tmp;
    }

    public static void main(String[] args) {
        // 假的头结点
        Node head = new Node(-1);
        Node cur = head;
        Node tmp = null;

        for(int i = 1; i < 8; i++){
            tmp = new Node(i);
            cur.next = tmp;
            cur = tmp;
        }
       // 向右旋转 
       rightRotate(head, 3);
       for (cur = head.next; cur != null; cur = cur.next){
           System.out.print(cur.data + " ");
       }
    }
}

3.思路

1.首先找到链表的倒数第k+1个结点slow和尾巴结点fast
2.将链表断开成两个子链表,其中后半部分的子链表的结点个数为k

网络摄像机Sensor低光性能实测:海思平台搭配索尼IMX335 vs 豪威OV4689 本文通过海思Hi3516DV300平台,对索尼IMX335与豪威OV4689两款网络摄像机Sensor进行低光性能实测。在信噪比、动态范围及实景成像对比中,IMX335凭借更优的噪声控制与稳定性表现领先,尤其在极低光环境下优势明显。文章为安防监控项目的Sensor选型与海思平台优化提供了数据参考与实战建议。 阅读详情

相关推荐

BMS | 从一串到几百串硬件架构简介

锂电池在生活中越来越多的方面扮演能源的角色,除了大家熟知的电动汽车行业,在一些消费类,工业类电子产品比如手机,电动自行车,电动工具中都有应用,追本溯源今天我们一起来学习下最基础的BMS架构。 1~4串架构 以S8241为代表的无通信/无固件/模拟器件 可实现过充保护、过放保护、过流/短路,参数由器件后缀代码决定;通信类手持设备供电系统;1~4节电池保护板架构 如图使用S-8241系列保护IC,一对充放电MOS管控制充放电的回路的切断和接通,系统供电来自于电芯电压,VM引脚用于检测过...

ningvay的博客 9920

数据结构与算法——将单链表向右旋转k个位置

如何将单链表向右旋转k个位置 给定1->2->3->4->5->6->7,k=3,那么旋转后的链表变为5->6->7->1->2->3->4 主要思路: 首先找到链表倒数第k+1个结点的尾结点slow和尾结点fast 把链表断开为两个子链表,其中后半部分子链表结点的个数为k 使原链表的尾结点指向链表的第一个结点 使链表的头结点指向原链表倒数第k个结点 这种方法只需要对链表进行一次遍历,因此时间复杂度为O(n),空间复杂度为O(1)

beilizhang的博客 916

历年北京理工大学复试专业综合题

。

A place to record sth. 2万+

面试题22:链表中倒数第k个结点

题目: 输入一个链表,输出该链表中倒数第k个结点。 分析: 如果是双向链表,可以遍历到最后一个,再通过prev指针找到倒数第k个。 如果是单向链表,访问倒数第k个,需要遍历n-k+1个结点,但是获取n的时候,需要遍历一遍链表,这不是最佳的解决方案。 为了实现只遍历链表一次就能找到倒数第k个结点,我们可以定义两个指针,第一个指针从链表的头指针开始遍历走k-1步,第二个指针保持不动,从第k步...

王劭阳的博客 215

Couldn‘t find device with uuid 恢复LVM元数据 linux

Couldn't find device with uuid 恢复LVM元数据 linux欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使

m0_57559579的博客 7170

风控IV、AUC、KS python计算代码

df_temp:数据集,Y:是否逾期标签,feas_list:需要计算IV的 变量。2、 按月和不同Y 下的 IV计算。

暮雨听轩的专栏 1618

链表:循环右移k个节点

    给定一个链表,循环向右移动k个节点。    如给定链表1-&gt;2-&gt;3-&gt;4-&gt;5,k=2,则返回循环右移2个节点后的链表:4-&gt;5-&gt;1-&gt;2-&gt;3。    思路:设置2个指针,前一个先向前移动k个节点,然后两个节点同步向前移,直到前一个指针到达链表末端,这时两个指针之间的部分就是需要循环移动到链表头的部分。    注意:这里k可以是任何值,...

Peanut 大本营 4140

【Office激活】学校正版Office已激活成功仍弹出激活窗口

学校正版Office激活问题:已激活成功仍弹出激活窗口

ESCM_的博客 1万+

c语言单链表交换节点,每k个节点反转链表(单链表)--数据结构--C语言算法

给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例: 给你这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2->1->4->3->5 当 k = 3 时,应当返回: 3->2->1-&g...

weixin_39637256的博客 787

VSCode配置C/C++语言环境(小白专用保姆教程)(超细)

VSCode配置C/C++语言环境(小白专用保姆教程)(超细)

ITQWQ的博客 8229

从零配置华为S5720交换机VLAN:Web界面与命令行双模式详解(附拓扑图)

本文详细解析华为S5720交换机VLAN配置的全过程,涵盖Web界面与命令行(CLI)双模式操作指南。从基础环境准备到多交换机环境配置同步,特别针对S5720-52X系列交换机的VLANif接口、端口分配策略及交换机堆叠技术进行深入讲解,并附实用拓扑图与配置示例,助力企业网络管理员高效完成VLAN部署。

happy2的博客 1374

求单向链表的倒数第k个节点(只遍历一次)

求单项链表的倒数第k个节点(只遍历一次) 单向链表求倒数第k个节点我们可以先遍历一遍找出链表的长度,再设置一个指针走(n-k)步可以找到倒数第k个节点。 但是,这需要遍历两次,如果只允许遍历一次我们就可以使用双指针。设置一个先指针和一个后指针,两个指针都指向头节点,先指针先向前走k步,之后两个指针一起向前移动,直到先指针遍历出最后一个节点值为null时,后指针指向的就是倒数第k个节点。 class Solution { public ListNode getKthFromEnd(ListNode

qq_52821374的博客 2399

华为OD机试双机位C卷-水库溃坝填补(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【水库溃坝填补】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。水库溃坝填补。

qq_45776114的博客 2110

面试题27:单链表向右旋转k个节点

Given a list, rotate the list to the right bykplaces, wherekis non-negative. For example:Given1->2->3->4->5->NULLandk=2,return4->5->1->2->3->NULL. 1 /** ...

weixin_30892763的博客 120

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

链表操作----将单链表向右旋转 K 个位置

给定一个单链表,设计一个算法实现链表向右旋转 K 个位置。  举例: 给定 1->2->3->4->5->6->NULL, K=3              则     4->5->6->1->2->3->NULL 分析: 1. 这道题目的关键在于找到 尾节点和旋转后新链表的尾节点。 假设是 tail, new->tail. 然后只要进行 tail->next  = head;

L.J.SHOU的专栏 3469

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

如何将单链表向右旋转k个位置

""" 给定单链表1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;6-&gt;7,k=3,那么旋转后的单链表变为5-&gt;6-&gt;7-&gt;1-&gt;2-&gt;3-&gt;4 """ class LNode: def __init__(self): self.data = None sel

Chang_Shuang的博客 606

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

61旋转链表(单链表操作)

1、基本思想 给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。 2、示例 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: ...

Revendell的博客 300

Java实现 LeetCode 61 旋转链表

61. 旋转链表 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: ...

南 墙 1万+

Java数据结构与算法之———如何将单链表向右旋转

1 问题 链表1-> 2-> 3-> 4-> 5-> 6-> 7 。K=3 那么旋转后链表为5-> 6-> 7-> 1-> 2-> 3-> 4 2 问题分析 1)首先找到倒数第K+1个节点 slow为尾结点fast.(定义两个快慢指针,先让fast走K步,然后在同时走。) 2)把链表断开成两个子链表,其中后半部分链表节点的个数为K个。 3)让原链表的结尾指向链表的第一个节点 4)让链表的...

weixin_45519487的博客 246

【LeetCode-面试算法经典-Java实现】【061-Rotate List(旋转单链表)】

【061-Rotate List(旋转单链表)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a list, rotate the list to the right by k places, where k is non-negative.   For example:   Given 1->2->3->4->5->NULL and k = 2,

https://github.com/Wang-Jun-Chao 4659

Leetcode 61. Rotate List(旋转链表) -- c语言

61. Rotate List Given a linkedlist, rotate the list to the right bykplaces, wherekis non-negative. Example 1: Input: 1->2->3->4->5->NULL, k = 2 Output: 4->5->1->2-&gt...

d_benhua的博客 389

1.5寻找倒数第k个元素

寻找倒数第k个元素 方法一: 将单链表逆置,变换成寻找正数第k个元素 方法二: 快慢指针法,快指针比慢指针快k个节点,当快指针到达尾节点时,慢指针为倒数第k个节点 方法三: 顺序遍历两次链表法,第一次遍历求出链表长度n,将寻找倒数第k个元素转换成寻找正数第n-k个元素 代码实现方法二: # -*-coding:utf-8-*- """ @Author : 图南 @Software: ...

bangtuancheng1680的博客 176

乾坤大挪移:链表向右旋转n位

【问题】 给定一个单向链表,设计一个算法实现链表向右旋转K个位置。K是非负的整数。这题看起来简单,可真编程实现有陷阱啰。 举例: 给定:1->2->3->4->5->6->null 并且K=3, 则有:4->5->6->1->2->3->null。 【分析】 这个题目其实并不难,主要是需要处理特殊情况: 1.链表长度为0 2.K>链表的长度 3.K=0 在处理的时候,首先我们应该

一个健忘症患者的记忆备份 1303

leetcode:单链表之Rotate List

leetcode:单链表之Rotate List 题目: Given a list, rotate the list to the right by k places, where k is non-negative. For example:  Given 1->2->3->4->5->nullptr and k = 2, return 4->5->1->2->3->nullptr.

what_lei的博客 333

LeetCode 第61题:旋转链表

输入: 1->2->3->4->5->NULL, k = 2。向右旋转 1 步: 5->1->2->3->4->NULL。向右旋转 2 步: 4->5->1->2->3->NULL。输入: 0->1->2->NULL, k = 4。输出: 4->5->1->2->3->NULL。向右旋转 1 步: 2->0->1->NULL。向右旋转 2 步: 1->2->0->NULL。向右旋转 3 步: 0->1->2->NULL。向右旋转 4 步: 2->0->1->NULL。输出: 2->0->1->NULL。

S_t_a_r_123的博客 858

LeetCode:旋转链表(C++)

给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3->NULL示例 2: 输入: 0->1->2->NULL, k = 4 输出: 2->0->1->NULL解释: 向右旋转 1 步: 2->0->1->NULL 向右旋转 2 步: 1->2->0

yl13137749352的博客 480
上一篇: 1.4 如何对链表进行重新排序
下一篇: 5404. 用栈操作构建数组
念殊15
博客等级 码龄7年 17粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值