字符串旋转

菜鸟今天准备好好学习,开始刷题玩,先从简单的入手,拿起很久没有看的算法。
</pre><pre name="code" class="cpp">刚看了<a target=_blank href="http://weibo.com/julyweibo?s=6cm7D0" target="_blank" alt="研究者July" title="研究者July" style="text-decoration: none; color: rgb(0, 120, 182); border-color: rgb(210, 210, 210); font-size: 14px; line-height: 16px;">July</a>大神的博客,找了LeetCode上面的题练手
</pre><pre name="code" class="cpp">https://leetcode.com/problems/rotate-array/
</pre><pre name="code" class="cpp">反转的思想是,(0,1,2,3....n);
从第倒数第K位反转  那么先交换(0,n-k),再交换(n-k+1,n),最后交换(0,n)
</pre><pre name="code" class="cpp">class Solution
{
public:
	void rotate(vector<int>& nums, int k);
	void Swap(vector<int>& nums, int first, int end);
};
void Solution::Swap(vector<int>& nums, int first, int end)
{
	while (first < end)
	{
		swap(nums[first++], nums[end--]);
	}
}
void Solution::rotate(vector<int>& nums, int k)
{
	if (nums.size() == 0) return;
	k = k%nums.size();
	if (k == 0) return;
	Swap(nums, 0, nums.size() - k - 1);
	Swap(nums, nums.size() - k, nums.size() - 1);
	Swap(nums, 0, nums.size() - 1);

}

阅读更多
文章标签: leetcode 刷题
个人分类: leetcode c++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭