leetCode刷題記錄 找出陣列中重複的數字

2021-10-08 17:34:15 字數 1012 閱讀 5842

找出陣列中重複的數字。

在乙個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。

示例 1:

輸入:[2, 3, 1, 0, 2, 5, 3]

輸出:2 或 3

小白的解答:兩個for迴圈,思路是每次從陣列中取出乙個元素,然後一次和剩下的元素做對比。超出時間限制

int findrepeatnumber(int* nums, int numssize)

}break;

}return result;

}

下面是官方思路以及c語言版本的解答

由於只需要找出陣列中任意乙個重複的數字,因此遍歷陣列,遇到重複的數字即返回。為了判斷乙個數字是否重複遇到,使用集合儲存已經遇到的數字,如果遇到的乙個數字已經在集合中,則當前的數字是重複數字。

初始化集合為空集合,重複的數字 repeat = -1;遍歷陣列中的每個元素:將該元素加入集合中,判斷是否新增成功,如果新增失敗,說明該元素已經在集合中,因此該元素是重複元素,將該元素的值賦給 repeat,並結束遍歷

返回 repeat

int

findrepeatnumber

(int

* nums,

int numssize)

}return ans;

}

知識點

memset:用於初始化,為新申請的記憶體進行初始化工作,函式原型如下

void

*memeset

(void

*s,int c,

unsigned

long n)

;//函式的功能是:將指標變數 s 所指向的前 n 位元組的記憶體單元用乙個「整數」 c 替換,注意 c 是 int 型。s 是 void* 型的指標變數,所以它可以為任何型別的資料進行初始化

LeetCode刷題記錄 回文數

題目 判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121輸出 true示例 2 輸入 121輸出 false解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10輸出 false解釋 從右向左讀,為...

leetcode刷題記錄

我覺得每天來兩道,練習練習,再看看人家是怎麼優化的。1.給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。c 暴力求解,204ms,9.1m class solution for index,num in enumerate ...

LeetCode刷題記錄

動態規劃和貪心演算法的異同點 class solution throw newruntimeexception 時間複雜度 o n 2 對於每個元素,我們試圖通過遍歷陣列的其餘部分來尋找它所對應的目標元素,這將耗費 o n o n 的時間。因此時間複雜度為 o n 2 需要一種方法,尋找符合要求的元...