最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言超詳細(xì)講解輪轉(zhuǎn)數(shù)組

 更新時間:2022年04月01日 14:10:23   作者:_奇奇  
這篇文章主要給大家講解輪轉(zhuǎn)數(shù)組的問題,一個問題不局限于一種解法,希望你看了本文的解決方法以后可以舉一反三自己編寫,這樣你的技術(shù)水平會有質(zhì)的提高

題目描述

給你一個數(shù)組,將數(shù)組中的元素向右輪轉(zhuǎn) k 個位置,其中 k 是非負(fù)數(shù)。OJ鏈接

實例

1.實例1

輸入: nums = [1,2,3,4,5,6,7], k = 3
輸出: [5,6,7,1,2,3,4]
解釋:
向右輪轉(zhuǎn) 1 步: [7,1,2,3,4,5,6]
向右輪轉(zhuǎn) 2 步: [6,7,1,2,3,4,5]
向右輪轉(zhuǎn) 3 步: [5,6,7,1,2,3,4]

2.實例2

輸入:nums = [-1,-100,3,99], k = 2
輸出:[3,99,-1,-100]
解釋: 
向右輪轉(zhuǎn) 1 步: [99,-1,-100,3]
向右輪轉(zhuǎn) 2 步: [3,99,-1,-100]

解題思路

為了使算法空間復(fù)雜度為O(1),原地旋轉(zhuǎn),所以不能額外創(chuàng)建數(shù)組。

以實例1為例子。使用三次逆轉(zhuǎn)法,讓數(shù)組旋轉(zhuǎn)k次

  • 先整體逆轉(zhuǎn) 變?yōu)?code>(7,6,5,4,3,2,1)
  • 逆轉(zhuǎn)子數(shù)組[0, k - 1] 變?yōu)?code>(5,6,7,4,3,2,1)
  • 逆轉(zhuǎn)子數(shù)組[k, numsSize - 1] 變?yōu)?code>(5,6,7,1,2,3,4)

1. 先整體逆轉(zhuǎn)

設(shè)置兩個指針變量分別指向頭部和尾部。當(dāng) begin<end 時,交換兩個位置上的值。綠色的數(shù)字為交換的位置。

在這里插入圖片描述

2.逆轉(zhuǎn)子數(shù)組[0, k - 1]

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

3.逆轉(zhuǎn)子數(shù)組[k, numsSize - 1]

此處不贅述、同上面兩個步驟的思路。這樣就完成了對數(shù)組的輪轉(zhuǎn)。

易錯點

假如需要輪轉(zhuǎn)的個數(shù)k大于數(shù)組numsSize的長度呢?

假如k為10,那么本題的結(jié)果是什么呢?

假如右旋10個數(shù),那么先旋7個后將又回到了原來的樣子。 然后再旋3個的話那么將和本題的旋3個一模一樣。

  • 本題的精髓就是題目,叫做輪轉(zhuǎn)數(shù)組。果然天道好輪回。輪轉(zhuǎn)7次又回到了起點。輪轉(zhuǎn)14次,21次…,只要七的倍數(shù)都回返回原地。
  • 所以在題目中要加入是否為k的倍數(shù)的判斷代碼
	if (k > numsSize)
	{
		k %= numsSize;
	}

代碼

此代碼帶主函數(shù)。LeetCode題目中是接口類型的不帶主函數(shù)。因為要輪轉(zhuǎn)三次。所以把while循環(huán)寫成一個函數(shù),方便復(fù)用。

 LeetCode189. 輪轉(zhuǎn)數(shù)組
#include<stdio.h>

void rotate1(int* begin, int* end)
{
	while (begin < end)
	{
		int t = 0;
		t = *begin;
		*begin = *end;
		*end = t;
		++begin;
		--end;
	}
}
void rotate(int* nums, int numsSize, int k) 
{
	//假如右旋10個數(shù),先旋7個后又回到了原來的樣子。然后再旋3次的話和本題再旋3次一模一樣。
	if (k > numsSize)
	{
		k %= numsSize;
	}
	int* begin = nums;
	int* end = nums + numsSize - 1;
	rotate1(begin, end);
	rotate1(begin, begin+k-1);
	rotate1(begin + k, end);

}
int main()
{
	int nums[] = { 1,2,3,4,5,6,7 };
	int sz = sizeof(nums) / sizeof(nums[0]);
	rotate(nums, sz, 3);

	for (int i = 0; i < sz; i++)
	{
		printf("%d ", nums[i]);
	}
	return 0;
}

到此這篇關(guān)于C語言超詳細(xì)講解輪轉(zhuǎn)數(shù)組的文章就介紹到這了,更多相關(guān)C語言 輪轉(zhuǎn)數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于C語言實現(xiàn)簡單的走迷宮游戲

    基于C語言實現(xiàn)簡單的走迷宮游戲

    這篇文章主要介紹了基于C語言實現(xiàn)簡單的走迷宮游戲,用到雙向隊列,方便在運行完畢后輸出經(jīng)過的點,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • C++圖解單向鏈表類模板和iterator迭代器類模版詳解

    C++圖解單向鏈表類模板和iterator迭代器類模版詳解

    這篇文章主要為大家詳細(xì)介紹了C++圖解單向鏈表類模板和iterator迭代器類模版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++string容器基本概念詳解

    C++string容器基本概念詳解

    c++相比c的一個好處就是實現(xiàn)了很多的容器和泛型算法,使得程序員的工作得到了很大的簡化,本文重點給大家介紹C++string容器基本概念講解,需要的朋友參考下吧
    2021-07-07
  • 基于Matlab繪制洛倫茲吸引子相圖

    基于Matlab繪制洛倫茲吸引子相圖

    洛倫茲吸引子(Lorenz attractor)是由MIT大學(xué)的氣象學(xué)家Edward Lorenz在1963年給出的。本文將利用Matlab實現(xiàn)洛倫茲吸引子相圖的繪制,感興趣的可以了解一下
    2022-04-04
  • 詳解C++編程中的輸入輸相關(guān)的類和對象

    詳解C++編程中的輸入輸相關(guān)的類和對象

    這篇文章主要介紹了詳解C++編程中的輸入輸相關(guān)的類和對象,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • VSCode保存代碼自動格式化無效的解決方法

    VSCode保存代碼自動格式化無效的解決方法

    最近一直使用vscode,VSCode中各種配置后,自動保存格式化仍然無效,本文就來介紹一下解決方法,感興趣的可以了解一下
    2023-08-08
  • C語言數(shù)據(jù)結(jié)構(gòu)之vector底層實現(xiàn)機制解析

    C語言數(shù)據(jù)結(jié)構(gòu)之vector底層實現(xiàn)機制解析

    向量(Vector)是一個封裝了動態(tài)大小數(shù)組的順序容器(Sequence?Container)。跟任意其它類型容器一樣,它能夠存放各種類型的對象??梢院唵蔚恼J(rèn)為,向量是一個能夠存放任意類型的動態(tài)數(shù)組
    2021-11-11
  • C++中求余運算符(%)示例詳解

    C++中求余運算符(%)示例詳解

    求余運算符“%”,二元運算符,具有左結(jié)合性。參與運算的量均為整型。求余運算的結(jié)果等于兩個數(shù)相除后的余數(shù)。看似很簡單的運算符,卻也真要掌握用好它也不容易,這篇文章主要介紹了C++中求余運算符(%)的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • C++之set自定義排序問題

    C++之set自定義排序問題

    這篇文章主要介紹了C++之set自定義排序問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • C++實現(xiàn)當(dāng)前時間動態(tài)顯示的方法

    C++實現(xiàn)當(dāng)前時間動態(tài)顯示的方法

    這篇文章主要介紹了C++實現(xiàn)當(dāng)前時間動態(tài)顯示的方法,涉及C++時間操作及Sleep方法的使用,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07

最新評論

修武县| 宁德市| 玛纳斯县| 通州区| 斗六市| 泸州市| 封开县| 鄂尔多斯市| 河源市| 清水河县| 延安市| 鹿泉市| 尉犁县| 泰兴市| 白城市| 新闻| 盘锦市| 湾仔区| 白银市| 禹城市| 铁岭市| 莒南县| 文水县| 安丘市| 前郭尔| 淳安县| 海门市| 岑巩县| 田林县| 莱芜市| 阳东县| 彭山县| 蓬莱市| 河北区| 右玉县| 兰州市| 普洱| 柞水县| 东兴市| 文昌市| 沽源县|