`

Rotate List (C++)

 
阅读更多

Question:

 

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,
return 4->5->1->2->3->NULL.

 

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *rotateRight(ListNode *head, int k) {
        if(!head) return NULL;
        if(k<=0) return head;
        if(!head->next) return head;
        
        ListNode *dh = new ListNode(0);
        dh->next = head;
        
        ListNode *pre = dh, *fur = head;
        
        for(;k>1;k--) {
            if(!fur->next) fur = dh->next;
            else fur=fur->next;
        } 
        
        if(!fur->next) {
            delete dh;
            return head;
        }
        
        for(;fur->next;) {
            pre=pre->next;
            fur=fur->next;
        }
        
        fur->next = dh->next;
        dh->next = pre->next;
        pre->next = NULL;
        
        ListNode *ret = dh->next;
        delete dh;
        return ret;
    }
};

 

 欢迎关注微信公众号——计算机视觉 

 

0
1
分享到:
评论

相关推荐

    C++ STL 开发技术导引(第6章)

    第1章 C++编程技术 2 1.1 类和对象 2 1.2 类的继承 5 1.3 函数重载 5 1.4 访问控制 7 1.5 操作符重载 8 1.6 显式类型转换 9 1.7 异常处理 13 1.8 名字空间 17 1.9 友员函数 20 1.10 内联函数 ...

    C++ STL.pdf

    这类算法在执行操作时可以修改容器的元素顺序,例如swap()、rotate()等。 3.4 数值算法 数值算法用于对数值进行操作,例如inner_product()、accumulate()等。 STL的使用能够大大提高C++程序的开发效率和性能,通过...

    c++STL学习——各种变异算法技术总结和用法代码实例(1)

    6. **旋转算法(`std::rotate`)**:这个算法用于改变容器内元素的顺序,将指定位置的元素移到容器开头,其他元素相应调整位置。这对于实现各种排序算法很有帮助。 7. **插入和替换算法(`std::insert`、`std::...

    C++ STL开发技术导引(第5章)

    第1章 C++编程技术 2 1.1 类和对象 2 1.2 类的继承 5 1.3 函数重载 5 1.4 访问控制 7 1.5 操作符重载 8 1.6 显式类型转换 9 1.7 异常处理 13 1.8 名字空间 17 1.9 友员函数 20 1.10 内联函数 ...

    C++ STL开发技术导引(第3章)

    第1章 C++编程技术 2 1.1 类和对象 2 1.2 类的继承 5 1.3 函数重载 5 1.4 访问控制 7 1.5 操作符重载 8 1.6 显式类型转换 9 1.7 异常处理 13 1.8 名字空间 17 1.9 友员函数 20 1.10 内联函数 ...

    C++ STL Reference Manua

    列表(list)是另一个重要的容器类型,它支持高效的插入和删除操作,尤其适合需要频繁进行此类操作的情况。 - **构造与析构**: 创建和销毁列表的不同方法。 - **赋值操作**: 改变列表的内容。 - **元素访问**: 直接...

    LeetCode最全代码

    * [Linked List](https://github.com/kamyu104/LeetCode#linked-list) * [Stack](https://github.com/kamyu104/LeetCode#stack) * [Queue](https://github.com/kamyu104/LeetCode#queue) * [Heap]...

    赛程循环表 计算机算法 c/c++语言

    在C/C++中,可以使用标准库中的容器,如`std::vector`或`std::list`,来简化数据结构的实现。同时,可以利用`std::rotate`函数来实现座位的旋转。为了提高效率,可以使用STL算法库中的其他工具,如`std::unique`去除...

    -C++参考大全(第四版) (2010 年度畅销榜

    34.40 rotate和rotate_copy 34.41 search 34.42 search_n 34.43 set_difference 34.44 set_intersection 34.45 set_symmetric_difference 34.46 set_union 34.47 sort 34.48 sort_heap 34.49 stable_partition 34.50...

    C++ STL Cheat Sheets..zip

    - **list**: 双向链表,支持快速在任意位置插入和删除,但访问速度较慢。 - **set** 和 **multiset**: 自动排序的关联容器,类似于红黑树,不包含重复元素(set)或允许重复元素(multiset)。 - **map** 和 **...

    C++ Certified Professional Programmer (1-60)

    #include&lt;list&gt; #include #include using namespace std; class B { int val; public: B(int v = 0) : val(v) {} int getV() const { return val; } operator int() const { return val; }; }; template...

    瑟夫环问题(rotate解法)

    STL是C++标准库的一部分,提供了各种高效的数据结构和算法,如vector、list、set、map以及algorithm头文件中的一系列操作函数。 在这个问题中,我们主要会用到`std::vector`来存储质数信息,以及`std::remove_if`这...

    STL源码剖析(中文详尽目录完整版)

    - **移位算法**:如`rotate`、`rotate_copy`等,用于旋转序列元素的位置。 #### 六、函数对象(仿函数) - **算术运算**:如`plus`、`minus`等,用于表示基本的算术运算。 - **关系运算**:如`less`、`greater`等...

    STL_资料(袁辉勇_整理)

    - **rotate**:旋转容器中的元素。 - **random_shuffle**:随机打乱容器中元素的顺序。 - **partition/stable_partition**:根据条件对容器中的元素进行分区。 - **sort/stable_sort**:对容器中的元素进行排序。 - ...

    javalruleetcode-LeetCode:LeetCode算法问题

    RotateList LeetCode 75 Sort Colors LeetCode 125 Valid Palindrome LeetCode 167 Two Sum II - Input array is sorted LeetCode 344 Reverse String LeetCode 345 Reverse Vowels of a String 2 字符串 编号 题目 ...

    STL算法整理

    在C++和STL的上下文中,我们通常使用以下几种类型的数据结构:vector(动态数组)、list(双向链表)、set(集合,基于红黑树)等。STL算法可以应用于这些容器,但需要正确地使用迭代器。 1. for_each算法 for_each...

    编程珠玑全部源代码 分享

    rotate.c -- Three ways to rotate the elements of a vector. The next two program are used in a pipeline to compute all anagrams in a dictionary sign.c -- Sign each word by its letters in sorted order...

    SplayTree详细解释

    - **基本操作**:包括左旋(leftRotate/Zag)和右旋(rightRotate/Zig)。 - **分情况讨论**: - 情况(A):当y(x的父亲节点)是根节点时,直接执行Zig或Zag操作。 - 情况(B):当y不是根节点,并且x和y同是各自...

    The Standard Template Library

    标准模板库(Standard Template Library,简称STL)是由Alexander Stepanov等人设计的一组C++类和函数,旨在提供一种通用且高效的解决方案来处理数据结构和算法问题。它通过一系列高度抽象的数据类型和操作这些类型...

Global site tag (gtag.js) - Google Analytics