1. 程式人生 > >【Leetcode283 -移動零 Move Zeroes 】(c語言版)

【Leetcode283 -移動零 Move Zeroes 】(c語言版)

目錄

移動零

測試單元

題目分析

大功告成

移動零

給定一個數組  nums,一個關係編寫函式將所有  0 移動到陣列的末尾,同時保持非零元素的相對順序。

示例:

輸入:
[0,1,0,3,12]
[1,3,12,0,0]

說明

  1. 必須在原陣列上操作,不能拷貝額外的陣列。
  2. 儘量減少操作次數。

測試單元

直接用題目中給出的測試用例

int main()
{
	int nums1[] = { 0, 1, 0, 3, 12 };
	int nums2[] = { 0 };
	moveZeroes(nums1, 5);
	moveZeroes(nums2, 1);
	for (int i = 0; i < 5; i++)
	{
		printf("%d ", nums1[i]);
	}
	printf("\n");
	for (int i = 0; i < 1; i++)
	{
		printf("%d ", nums2[i]);
	}
	printf("\n");
	system("pause");
	return 0;
}

題目分析

題目要求將陣列中的零移動到陣列末尾,既可以轉化為將非零數放在陣列開頭,然後按照陣列原有個數在在後補幾個零即可。

#define _CRT_SECURE_NO_WARNINGS 1
#include "test.h"

void moveZeroes(int nums[], int numsSize)
{
	if (numsSize == 0 || numsSize == 1)
		return;
	int j = 0;
	for (int i = 0; i < numsSize; i++)
	{
		if (nums[i])
		{
			nums[j++] = nums[i];
		}
	}
	for (int i = j; i < numsSize; i++)
	{
		nums[i] = 0;
	}
}
int main()
{
	int nums1[] = { 0, 1, 0, 3, 12 };
	int nums2[] = { 0 };
	moveZeroes(nums1, 5);
	moveZeroes(nums2, 1);
	for (int i = 0; i < 5; i++)
	{
		printf("%d ", nums1[i]);
	}
	printf("\n");
	for (int i = 0; i < 1; i++)
	{
		printf("%d ", nums2[i]);
	}
	printf("\n");
	system("pause");
	return 0;
}

大功告成

相關推薦

Leetcode283 -移動 Move Zeroes c語言

目錄 移動零 測試單元 題目分析 大功告成 移動零 給定一個數組  nums,一個關係編寫函式將所有  0 移動到陣列的末尾,同時保持非零元素的相對順序。 示例: 輸入: [0,1

Leetcode7-反轉整數 Reverse IntegerC語言

目錄 反轉整數: 測試單元 反轉整數: 給定一個32位有符號整數,將整數中的數字進行反轉。 示例1: 輸入: 123 輸出: 321  示例2: 輸入: -123 輸出: -321 示例3: 輸入: 120 輸出: 21 注意:

Leetcode66 -加一 Plus One C語言

目錄 測試單元 題目分析 大功告成 加一Plus One 給定一個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。 最高位數字存放在陣列的首位, 陣列中每個元素只儲存一個數字。 你可以假設除了整數 0 之外,這個整數不會以零開頭。 示例 

資料結構C語言第三 基礎實驗二

1、編寫函式slnklist delx(linklist head, datatype x),刪除不帶頭結點單鏈表head中第一個值為x 的結點。 並構造測試用例進行測試。 2、假設線性表(a1,a2,a3,…an)採用不帶頭結點的單鏈表儲存, 請設計演算法函式linklist reverse1

資料結構C語言第三基礎實驗一

1、基於sequlist.h中定義的順序表,編寫演算法函式reverse(sequence_list *L),實現順序表的就地倒置。 2、編寫一個演算法函式void sprit( sequence_list *L1,sequence_list *L2,sequence_list *L3), 將順

資料結構C語言讀書筆記1(基本概念和術語)

資料: 所有輸入到計算機中,並被計算機程式處理的符號的總稱。 資料元素: 資料的基本單位,在計算機程式中經常被當做一個整體進行考慮和處理 資料物件: 性質相同的資料元素的集合,是資料的一個子集。 資料結構: 相互之間存在一種或多種特定關係的資料元素的集合。這種資料元素之間

LeetCode -- 50 Pow(x, n)C語言

題目描述: 程式碼如下(附有詳解): double myPow(double x, int n) //如果n為零,表明冪數為0,直接返回1 if(n == 0) return 1; //如果n為零,表明冪數為0,直接返回x

資料結構c語言中線性表的單鏈表儲存結構

本文轉自:https://blog.csdn.net/prlhnxx/article/details/79174782 /* run this program using the console pauser or add your own getch, system("pause") or i

初夏小談:斐波那契三種實現方法C語言第三種相信你沒見過

斐波那契數列(Fibonaccisequnce),又稱黃金分割數列。研究斐波那契數列有相當重要的價值,例在現代物理、準晶體結構、化學等領域都有直接的應用。因此研究斐波那契數列也是很有必要的。 今天初夏將為大家帶來計算斐波那契數列第n位的三種方法 第一種利用遞迴的方法計算,程式碼相當簡單,但其

如何在串列埠除錯助手上,使用printf()函式顯示十進位制的資料及漢字說明c語言

估計很多人和我一樣,很想直接在串列埠除錯助手上顯示十進位制資料,我最近在做一個專案,當然本人也是小白,但這個問題已經被我解決了,希望幫助需要的人。 我們都知道,串列埠助手一般都只能顯示十六進位制資料和字元,如果我們想將控制器的實時資料通過串列埠傳送到上位機,方便監測,最好直接顯示十進位制資料。廢

關於嚴蔚敏老師《資料結構C語言》書中程式碼的誤解

清華大學嚴蔚敏老師的《資料結構(C語言版)》以其嚴謹被奉為經典,我是從其Pascal版一路追著買到C語言版,一直覺得這本書理論功力深厚,是不可多得的資料結構教材。但其編寫過程中為避免太過拘泥於具體語言細節,使用了ADT描述,具體演算法中使用了偽碼描述,對於新手直接把程式碼原樣照抄是沒法直接在電腦

排序演算法C語言

交換類 氣泡排序(Bubble Sort) O(n2)O(n^2)O(n2) 最簡單的一種排序演算法。先從陣列中找到最大值(或最小值)並放到陣列最左端(或最右端),然後在剩下的數字中找到次大值(或次小值),以此類推,直到陣列有序排列。 void Bubble

L1-028 判斷素數C語言

L1-028 判斷素數 (10 分) 本題的目標很簡單,就是判斷一個給定的正整數是否素數。 輸入格式: 輸入在第一行給出一個正整數N(≤ 10),隨後N行,每行給出一個小於2 ^​31 的需要判斷的正整數。 輸出格式: 對每個需要判斷的正整數,如果它是素數,則在

LeetCode--153 尋找旋轉排序陣列中的最小值 Find Minimum in Rotated Sorted ArrayC語言

題目描述: 解題思路:可以使用順序遍歷,將最小值記錄下來,時間複雜度為O(n),但是根據題目描述,該陣列為旋轉排序陣列,這裡就可以聯想到二分查詢,試著用二分查詢的思想,首先使用Lindex和Rindex記錄左右區間的下標,然後再用Mindex表示區間中間元素的下標,根據

C語言實現線性表歸併_含原始碼和執行結果_資料結構C語言

採用動態分配順序儲存結構實現 採用單鏈表結構實現 1.採用動態分配實現 #include<stdio.h> #include<stdlib.h> #define LIST_INIT_SIZE 100 #define LISTINCREM

7-2 組個最小數C語言

7-2 組個最小數 (20 分) 給定數字0-9各若干個。你可以以任意順序排列這些數字,但必須全部使用。目標是使得最後得到的數儘可能小(注意0不能做首位)。例如:給定兩個0,兩個1,三個5,一個8,我們得到的最小的數就是10015558。 現給定數字,請編寫程式

7-1 最大子列和問題C語言

7-1 最大子列和問題 (20 分) 給定K個整陣列成的序列{ N1, N2, …, NK },“連續子列”被定義為{ Ni, Ni+1, …, Nj },其中 1 <= i <= j <= K。“最大子列和”則被定義為所有連續子列元素的和中最

作業系統程序排程實現演算法c語言

#include <stdio.h>#include <stdlib.h>#include <windows.h>   //包含sleep函式#define TRUE 1#define FALSE 0#define OK 1#define

資料結構——有序連結串列合併C語言

有序連結串列合併 兩個有序的連結串列,要求將其合併為一個連結串列,並且該連結串列保持有序!! 這裡所講的是連結串列升序! 這裡我們的實驗資料,以及思路如圖所示!! 實驗資料: 連結串列1:1, 3, 5, 7 連結串列2:1, 2, 4 ,5

《資料結構題集C語言》電子書下載 -百度網盤 高清PDF格式

     作者:嚴蔚敏,吳偉民,米寧 出版日期:1999-2-1 出版社:清華出版社 頁數:234 ISBN:9787302033141 檔案格式:PDF 檔案大小:18.13 MB     本