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; } };
欢迎关注微信公众号——计算机视觉
相关推荐
第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 内联函数 ...
这类算法在执行操作时可以修改容器的元素顺序,例如swap()、rotate()等。 3.4 数值算法 数值算法用于对数值进行操作,例如inner_product()、accumulate()等。 STL的使用能够大大提高C++程序的开发效率和性能,通过...
6. **旋转算法(`std::rotate`)**:这个算法用于改变容器内元素的顺序,将指定位置的元素移到容器开头,其他元素相应调整位置。这对于实现各种排序算法很有帮助。 7. **插入和替换算法(`std::insert`、`std::...
第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 内联函数 ...
第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 内联函数 ...
列表(list)是另一个重要的容器类型,它支持高效的插入和删除操作,尤其适合需要频繁进行此类操作的情况。 - **构造与析构**: 创建和销毁列表的不同方法。 - **赋值操作**: 改变列表的内容。 - **元素访问**: 直接...
* [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++中,可以使用标准库中的容器,如`std::vector`或`std::list`,来简化数据结构的实现。同时,可以利用`std::rotate`函数来实现座位的旋转。为了提高效率,可以使用STL算法库中的其他工具,如`std::unique`去除...
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...
- **list**: 双向链表,支持快速在任意位置插入和删除,但访问速度较慢。 - **set** 和 **multiset**: 自动排序的关联容器,类似于红黑树,不包含重复元素(set)或允许重复元素(multiset)。 - **map** 和 **...
#include<list> #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...
STL是C++标准库的一部分,提供了各种高效的数据结构和算法,如vector、list、set、map以及algorithm头文件中的一系列操作函数。 在这个问题中,我们主要会用到`std::vector`来存储质数信息,以及`std::remove_if`这...
- **移位算法**:如`rotate`、`rotate_copy`等,用于旋转序列元素的位置。 #### 六、函数对象(仿函数) - **算术运算**:如`plus`、`minus`等,用于表示基本的算术运算。 - **关系运算**:如`less`、`greater`等...
- **rotate**:旋转容器中的元素。 - **random_shuffle**:随机打乱容器中元素的顺序。 - **partition/stable_partition**:根据条件对容器中的元素进行分区。 - **sort/stable_sort**:对容器中的元素进行排序。 - ...
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 字符串 编号 题目 ...
在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...
- **基本操作**:包括左旋(leftRotate/Zag)和右旋(rightRotate/Zig)。 - **分情况讨论**: - 情况(A):当y(x的父亲节点)是根节点时,直接执行Zig或Zag操作。 - 情况(B):当y不是根节点,并且x和y同是各自...
标准模板库(Standard Template Library,简称STL)是由Alexander Stepanov等人设计的一组C++类和函数,旨在提供一种通用且高效的解决方案来处理数据结构和算法问题。它通过一系列高度抽象的数据类型和操作这些类型...