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

Go語言題解LeetCode1260二維網(wǎng)格遷移示例詳解

 更新時(shí)間:2023年01月05日 14:45:07   作者:劉09k11  
這篇文章主要為大家介紹了Go語言題解LeetCode1260二維網(wǎng)格遷移示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

題目描述

1260. 二維網(wǎng)格遷移 - 力扣(LeetCode)

給你一個(gè) mn 列的二維網(wǎng)格 grid 和一個(gè)整數(shù) k。你需要將 grid 遷移 k 次。

每次「遷移」操作將會引發(fā)下述活動:

  • 位于 grid[i][j] 的元素將會移動到 grid[i][j + 1]。
  • 位于 grid[i][n - 1] 的元素將會移動到 grid[i + 1][0]。
  • 位于 grid[m - 1][n - 1] 的元素將會移動到 grid[0][0]。

請你返回 k 次遷移操作后最終得到的 二維網(wǎng)格。

示例 1:

輸入:grid = [[1,2,3],[4,5,6],[7,8,9]], k = 1
輸出:[[9,1,2],[3,4,5],[6,7,8]]

示例 2:

輸入:grid = [[3,8,1,9],[19,7,2,5],[4,6,11,10],[12,0,21,13]], k = 4
輸出:[[12,0,21,13],[3,8,1,9],[19,7,2,5],[4,6,11,10]]

示例 3:

輸入:grid = [[1,2,3],[4,5,6],[7,8,9]], k = 9
輸出:[[1,2,3],[4,5,6],[7,8,9]]

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m <= 50
  • 1 <= n <= 50
  • -1000 <= grid[i][j] <= 1000
  • 0 <= k <= 100

思路分析

  • 最笨的方法移動k次
  • 第一次優(yōu)化,對k取模,比如一個(gè)3*3的網(wǎng)格,移9次等于沒有移
  • 第二次優(yōu)化,由k的值確定向左移簡單還是向右移簡單:正常情況是向右移,比如一個(gè)3*3的網(wǎng)格,要求移8次,相當(dāng)于左移一次
  • 第三次優(yōu)化,空間換時(shí)間,需要多建立長度為k的臨時(shí)數(shù)組,但這樣可以把k次移動變成1次移動,除了需要移動到臨時(shí)數(shù)組里的元素,其它元素的移動步長都是k。(這樣一來,其實(shí)第二次優(yōu)化的意義不是很大,就省了一點(diǎn)內(nèi)存而已)

AC 代碼

class Solution {
    public List<List<Integer>> shiftGrid(int[][] grid, int k) {
		int []yw=new int[grid.length*grid[0].length];
		int p=0;
		for(int i=0;i<grid.length;i++) {
			for(int j=0;j<grid[0].length;j++) {
				yw[p++]=grid[i][j];
			}
		}
		k=k%yw.length;
		if(k<yw.length/2) {//右移
			int []tmp=new int[k];
			int pnt=yw.length-k;
			for(int i=0;i<k;i++) {
				tmp[i]=yw[pnt];
				pnt++;
			}
			for(int i=yw.length-k-1;i>=0;i--) {
				yw[i+k]=yw[i];
			}
			for(int i=0;i<k;i++) {
				yw[i]=tmp[i];
			}
		} else {//左移
            k=yw.length-k;
			int []tmp=new int[k];
			for(int i=0;i<k;i++) {
				tmp[i]=yw[i];
			}
			for(int i=k;i<yw.length;i++) {
				yw[i-k]=yw[i];
			}
			int pnt=yw.length-k;
			for(int i=0;i<k;i++) {
				yw[pnt]=tmp[i];
				pnt++;
			}
		}
		List<List<Integer>> res=new ArrayList<>();
		List<Integer> tp=new ArrayList<>();
		p=0;
		for(int i=0;i<grid.length;i++) {
			for(int j=0;j<grid[0].length;j++) {
				tp.add(yw[p++]);
			}
			res.add(tp);
			tp=new ArrayList<>();
		}
		return res;
	}
}

以上就是Go語言題解LeetCode1260二維網(wǎng)格遷移示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Go語言二維網(wǎng)格遷移的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang定時(shí)器的2種實(shí)現(xiàn)方法與區(qū)別

    Golang定時(shí)器的2種實(shí)現(xiàn)方法與區(qū)別

    這篇文章主要給大家介紹了關(guān)于Golang定時(shí)器的2種實(shí)現(xiàn)方法與區(qū)別的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • golang實(shí)現(xiàn)http服務(wù)器處理靜態(tài)文件示例

    golang實(shí)現(xiàn)http服務(wù)器處理靜態(tài)文件示例

    這篇文章主要介紹了golang實(shí)現(xiàn)http服務(wù)器處理靜態(tài)文件的方法,涉及Go語言基于http協(xié)議處理文件的相關(guān)技巧,需要的朋友可以參考下
    2016-07-07
  • Go?Excelize?API源碼解析GetSheetFormatPr使用示例

    Go?Excelize?API源碼解析GetSheetFormatPr使用示例

    這篇文章主要為大家介紹了Go?Excelize?API源碼解析GetSheetFormatPr使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Golang使用Swagger文檔教程詳解

    Golang使用Swagger文檔教程詳解

    這篇文章主要為大家詳細(xì)介紹Golang使用Swagger文檔教程的相關(guān)知識,文中通過示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-12-12
  • 詳解Go語言中Goroutine退出機(jī)制的原理及使用

    詳解Go語言中Goroutine退出機(jī)制的原理及使用

    goroutine是Go語言提供的語言級別的輕量級線程,在我們需要使用并發(fā)時(shí),我們只需要通過?go?關(guān)鍵字來開啟?goroutine?即可。本文就來詳細(xì)講講Goroutine退出機(jī)制的原理及使用,感興趣的可以了解一下
    2022-07-07
  • 使用Golang實(shí)現(xiàn)對網(wǎng)絡(luò)數(shù)據(jù)包的捕獲與分析

    使用Golang實(shí)現(xiàn)對網(wǎng)絡(luò)數(shù)據(jù)包的捕獲與分析

    在網(wǎng)絡(luò)通信中,網(wǎng)絡(luò)數(shù)據(jù)包是信息傳遞的基本單位,抓包是一種監(jiān)控和分析網(wǎng)絡(luò)流量的方法,用于獲取網(wǎng)絡(luò)數(shù)據(jù)包并對其進(jìn)行分析,本文將介紹如何使用Golang實(shí)現(xiàn)抓包功能,包括網(wǎng)絡(luò)數(shù)據(jù)包捕獲和數(shù)據(jù)包分析,需要的朋友可以參考下
    2023-11-11
  • Go并發(fā)編程之死鎖與活鎖的案例分析

    Go并發(fā)編程之死鎖與活鎖的案例分析

    死鎖就是在并發(fā)程序中,兩個(gè)或多個(gè)線程彼此等待對方完成操作,從而導(dǎo)致它們都被阻塞,并無限期地等待對方完成;活鎖就是程序一直在運(yùn)行,但是無法取得進(jìn)展。本文將從一些案例出發(fā),分析一下它們,希望對大家有所幫助
    2023-04-04
  • Go 語言入門學(xué)習(xí)之正則表達(dá)式

    Go 語言入門學(xué)習(xí)之正則表達(dá)式

    這篇文章主要介紹了Go 語言入門學(xué)習(xí)之正則表達(dá)式,文章基于GO語言的相關(guān)資料展開詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • Go中變量命名規(guī)則與實(shí)例

    Go中變量命名規(guī)則與實(shí)例

    命名規(guī)則涉及變量、常量、全局函數(shù)、結(jié)構(gòu)、接口、方法等的命名,下面這篇文章主要給大家介紹了關(guān)于Go中變量命名的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • 詳解Golang中零拷貝的原理以及實(shí)踐

    詳解Golang中零拷貝的原理以及實(shí)踐

    零拷貝技術(shù)相信大家都有所耳聞,但是本文不僅會講述零拷貝技術(shù)的原理,并將從實(shí)際代碼出發(fā),看看零拷貝技術(shù)在golang中的應(yīng)用,現(xiàn)在讓我們開始吧
    2023-07-07

最新評論

板桥市| 高唐县| 闽侯县| 瑞安市| 长顺县| 朝阳区| 承德市| 宜君县| 齐河县| 定边县| 运城市| 大厂| 白河县| 万荣县| 拉孜县| 页游| 秦安县| 临猗县| 万宁市| 洞口县| 临夏市| 汝城县| 闻喜县| 天等县| 英吉沙县| 河津市| 新兴县| 阳城县| 隆回县| 个旧市| 定西市| 明光市| 武定县| 叶城县| 威信县| 石棉县| 石狮市| 巴东县| 三原县| 南雄市| 新乡县|