国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

重生之我是孔乙己——查找數(shù)組缺失元素的幾種方法

這篇具有很好參考價值的文章主要介紹了重生之我是孔乙己——查找數(shù)組缺失元素的幾種方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?重生之我是孔乙己——查找數(shù)組缺失元素的幾種方法

  • ?? 博客內(nèi)容:查找缺失元素

  • ?? 作??者:陳大大陳

  • ?? 個人簡介:一個正在努力學(xué)技術(shù)的準前端,專注基礎(chǔ)和實戰(zhàn)分享 ,歡迎私信!

  • ?? 歡迎大家:這里是CSDN,我總結(jié)知識和寫筆記的地方,喜歡的話請三連,有問題請私信 ?? ?? ??

目錄

題目?

排序法?

異或法?

最天才的方法

題目?

數(shù)組nums包含從0n的所有整數(shù),但其中缺了一個。請編寫代碼找出那個缺失的整數(shù)。你有辦法在O(n)時間內(nèi)完成嗎??

示例 1:

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

示例 2:

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

排序法?

第一種方法,需要用到qsort函數(shù),先將數(shù)組按從小到大排好序,然后遍歷,當(dāng)下標與該數(shù)組元素不相等時,返回這個數(shù)組元素的值。?

冒泡排序的時間復(fù)雜度是o(n^2),而快速排序的時間復(fù)雜度是o(n*logn),我們選擇效率更優(yōu)的快速排序。?排序之后我們需要遍歷數(shù)組,那程序總共需要執(zhí)行n*logn+n次。

時間復(fù)雜度是o(n*logn)。

#include<stdio.h>
#include<stdlib.h>
int cmp(const void* a, const void* b)
{
	return *(int*)a - *(int*)b; //由小到大排序
	//return *(int *)b - *(int *)a; 由大到小排序
}
int missingNumber(int* nums, int NumsSize)
{
	int i;
	qsort(nums, NumsSize, sizeof(nums[0]), cmp);
	for (i = 0; i <=NumsSize; i++)
	{
		if (i != nums[i])
		{
			return i;
		}
	}
	return -1;
}
int main()
{
	int a[] = {7,9,10 ,0,3,4,1,2,5,6};
	if (missingNumber(a, sizeof(a) / sizeof(a[0])) == -1)
	{
		printf("未找到\n");
	}
	else
		printf("%d",missingNumber(a, sizeof(a) / sizeof(a[0])));
	return 0;
}

異或法?

異或,這個方法思路類似于之前找單身狗那道題,異或的兩個元素相同為0,相異為1。?

要注意第二次遍歷次數(shù)是數(shù)組大小加一,原因是要加上缺失的那一個元素。

除了缺失的元素,其余元素異或的結(jié)果一定為0,所以第二次異或的結(jié)果一定是缺失的元素值。

程序要執(zhí)行2n次。?

時間復(fù)雜度:o(n),比第一種效率更高。?

#include<stdio.h>
#include<string.h>
int main()
{
	int a[] = { 7,9,10 ,0,3,4,1,2,5,6 };
	int i = 0;
	int x = 0;
	while (i <sizeof(a)/sizeof(a[0]))
	{
		x ^= a[i];
		i++;
	}
	for (i = 1; i <= sizeof(a)/sizeof(a[0]) + 1; i++)
	{
		x ^= i;
	}
	printf("%d", x);
	return 0;
}

最天才的方法

鬼才才能想出來的方法,果然是大道至簡!

第一次遍歷將整個數(shù)組以及缺失的元素加到一起。

第二次遍歷將原數(shù)組的值挨個減掉,這樣最后剩下的值一定就是所缺失的元素。

時間復(fù)雜度是驚人的o(n),蕪湖,最好使竟是最單純的,感動了!

重生之我是孔乙己——查找數(shù)組缺失元素的幾種方法

int missingNumber(int* nums, int numsSize) {

	int sum = 0;
	for (int i = 0; i < numsSize + 1; i++)
	{
		sum += i;
	}
	for (int i = 0; i < numsSize; i++)
	{
		sum -= nums[i];
	}
	return sum;

}

總結(jié)
??感謝觀看,本文到這里就結(jié)束了,如果覺得有幫助,請給文章點個贊吧,讓更多的人看到。?? ?? ??

重生之我是孔乙己——查找數(shù)組缺失元素的幾種方法?

??也歡迎你,關(guān)注我。?? ?? ??

??原創(chuàng)不易,還希望各位大佬支持一下,你們的點贊、收藏和留言對我真的很重要?。。?? ?? ?? 最后,本文仍有許多不足之處,歡迎各位認真讀完文章的小伙伴們隨時私信交流、批評指正!下期再見。??文章來源地址http://www.zghlxwxcb.cn/news/detail-409520.html

到了這里,關(guān)于重生之我是孔乙己——查找數(shù)組缺失元素的幾種方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 淺談“孔乙己的長衫“是脫不下來還是難脫下?

    淺談“孔乙己的長衫“是脫不下來還是難脫下?

    名人說:往者不可諫,來者猶可追?!墩撜Z·微子篇》 創(chuàng)作者:Code_流蘇(CSDN) ★溫馨提示:以下僅代表個人觀點,不代表其它任何人看法。 〇、緣由 “ 學(xué)歷不但是我的敲門磚,也是我下不來的高臺,更是孔乙己脫不下的長衫 ”。這句出自“孔乙己文學(xué)”的話語,不知是

    2023年04月26日
    瀏覽(17)
  • 學(xué)歷不僅是敲門磚,也是我下不來的高臺,更是孔乙己脫不下的長衫

    學(xué)歷不僅是敲門磚,也是我下不來的高臺,更是孔乙己脫不下的長衫

    魯迅《孔乙己》是一篇具有深刻思想和感人情感的短篇小說,通過酒肆里的故事反映社會的殘酷和人性的悲哀; 故事中的孔乙己是一個身世不明、生活貧困的酒鬼,他雖然飽受百般屈辱,但卻有著堅定的自尊和對人性的信仰;他并不在乎別人對他的嘲諷和侮辱,而是堅持自己

    2024年02月02日
    瀏覽(19)
  • 重生前端之我在javascript敲代碼(03-數(shù)組)

    重生前端之我在javascript敲代碼(03-數(shù)組)

    一. 數(shù)組(重點) 思考:如何保存一個班級的所有學(xué)生的姓名? 回答:一種方法利用前面學(xué)習(xí)過的知識,則每一條信息都需要一個變量去保存,缺點是這樣做很麻煩,而且容易出錯,又不合理;另一種方法就是利用數(shù)組。 概念:數(shù)組是存儲一系列值的變量集合,可以存儲多

    2024年04月11日
    瀏覽(26)
  • 重生之我在CSDN學(xué)習(xí)spark

    重生之我在CSDN學(xué)習(xí)spark

    1.什么是spark 在官網(wǎng)上對于spark的解釋是以下一段話 意思是Apache SparkTM 是一個多語言引擎,用于在單節(jié)點機器或集群上執(zhí)行數(shù)據(jù)工程、數(shù)據(jù)科學(xué)和機器學(xué)習(xí)。 Spark是一種快速、通用、可擴展的大數(shù)據(jù)分析引擎,2009年誕生于加州大學(xué)伯克利分校AMPLab,2010年開源,2013年6月成為

    2024年03月22日
    瀏覽(18)
  • 重生之我測阿里云U1實例(通用算力型實例)

    重生之我測阿里云U1實例(通用算力型實例)

    參與ECSU實例評測,申請免費體驗機會:https://developer.aliyun.com/mission/review/ecsu 參與ECSU實例評測,申請免費體驗機會:https://developer.aliyun.com/mission/review/ecsu 參與ECSU實例評測,申請免費體驗機會:https://developer.aliyun.com/mission/review/ecsu 視頻演示地址點我直達Bilibili 視頻演示地址點

    2024年02月08日
    瀏覽(15)
  • 劍指29.順時針打印矩陣 31 棧的壓入,彈出序列 03 數(shù)組中的重復(fù)數(shù)字 53缺失的數(shù)字 04二維數(shù)組中的查找

    劍指29.順時針打印矩陣 31 棧的壓入,彈出序列 03 數(shù)組中的重復(fù)數(shù)字 53缺失的數(shù)字 04二維數(shù)組中的查找

    回字形 思路:pushed數(shù)組里遍歷進棧,遍歷時候,先進棧,再判斷棧頂是否和poped序列的當(dāng)前指向的是否一樣,一樣就pop,直到不一樣為止,然后繼續(xù)遍歷進棧。然后再判斷棧里面剩余的和poped序列指向的一不一樣,一樣,就把棧里面的pop,直到棧為空,只要有一個不一樣,就

    2024年02月16日
    瀏覽(25)
  • 力扣數(shù)組類題目--41缺失的第一個正數(shù)

    力扣數(shù)組類題目--41缺失的第一個正數(shù)

    41 缺失的第一個正數(shù) 給你一個未排序的整數(shù)數(shù)組 nums ,請你找出其中沒有出現(xiàn)的最小的正整數(shù)。 請你實現(xiàn)時間復(fù)雜度為 O(n) 并且只使用常數(shù)級別額外空間的解決方案 。 示例 1: 輸入:nums = [1,2,0] 輸出:3 示例 2: 輸入:nums = [3,4,-1,1] 輸出:2 示例 3: 輸入:nums = [7,8,9,11,12

    2024年02月11日
    瀏覽(23)
  • Practices11|41. 缺失的第一個正數(shù)(數(shù)組)、73. 矩陣置零(矩陣)

    Practices11|41. 缺失的第一個正數(shù)(數(shù)組)、73. 矩陣置零(矩陣)

    1.題目: 給你一個未排序的整數(shù)數(shù)組? nums ?,請你找出其中沒有出現(xiàn)的最小的正整數(shù)。 請你實現(xiàn)時間復(fù)雜度為? O(n) ?并且只使用常數(shù)級別額外空間的解決方案。 示例 1: 示例 2: 示例 3: 提示: 1 = nums.length = 5 * 105 -231 = nums[i] = 231 - 1 2.思路: 如果本題沒有額外的時空復(fù)雜

    2024年02月12日
    瀏覽(21)
  • 【題解】二分查找-I、二維數(shù)組中的查找

    題目鏈接:二分查找-I 解題思路:遍歷 代碼如下: 這種解題思路很明顯沒有很好的利用題目中強調(diào)的數(shù)組是升序的,既然是升序,那肯定前半部分偏小,后半部分偏大,如果我們能知道應(yīng)該去前半部分還是后半部分尋找target,效率相對就提升很多了,于是我們有了下面的分

    2024年02月14日
    瀏覽(19)
  • JavaSE基礎(chǔ)50題:25. 查找數(shù)組中指定元素(順序查找)

    JavaSE基礎(chǔ)50題:25. 查找數(shù)組中指定元素(順序查找)

    給定一個數(shù)組,再給定一個元素,找出該元素在數(shù)組中的位置。 【概述】 一個一個找,比較慢。 想要快一點的方法,可以使用二分查找,在后續(xù)《JavaSE基礎(chǔ)50題》專欄中27題中詳細講解。 【代碼】 【輸出結(jié)果】

    2024年02月04日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包