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

【C語言】每日一題(楊氏矩陣查找數(shù))

這篇具有很好參考價值的文章主要介紹了【C語言】每日一題(楊氏矩陣查找數(shù))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

楊氏矩陣介紹:

既然在楊氏矩陣中查找數(shù),那什么是楊氏矩陣呢?

矩陣的每行從左到右是遞增的,矩陣從上到下是遞增的。

例如:
【C語言】每日一題(楊氏矩陣查找數(shù)),c語言,矩陣,算法,數(shù)據(jù)結(jié)構(gòu)

方法:

看到這題我們馬上就可以想到遍歷一遍數(shù)組,但無疑這是效率最低的算法,就不展開詳細(xì)來講了

那還有什么樣的算法呢?

我們發(fā)現(xiàn)這歌矩陣是特殊的:左到右是遞增的,矩陣從上到下是遞增
可以利用這個規(guī)律來做題

思路:

我們發(fā)現(xiàn)右上角的數(shù)比較特殊,是一行中最大的,一列中最小的,
可以用右上角的數(shù)字與target,也就是我們要找的目標(biāo)數(shù)比較
設(shè)arr[x][y]為右上角元素

有三種情況:
1.當(dāng) arr[x][y]==target,我們返回
2.當(dāng) arr[x][y]>target,說明target有可能在這列
則我們需要令 y--,向左進(jìn)行縮減排查
3.當(dāng) arr[x][y]<target,說明target不可能在這一行,
需要 x++,到下一行繼續(xù)尋找

代碼實現(xiàn):

//我們假設(shè)找到了返回1,沒找到返回1
int find(int arr[][3], int row, int col,int target)
{
	int x = 0;
	int y = col - 1;
	while (x <= row && y >= 0)
	{
		if (arr[x][y] == target)
			return 1;
		else if (arr[x][y] < target)
			x++;
		else
			y--;
	}
	return 0;//沒找到時返回0
}
int main()
{
	int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
	int target = 0;
	scanf("%d", &target);
	int ret = find(arr, 3, 3, target);
	if (ret == 1)
		printf("找到了\n");
	else
		printf("沒找到\n");
	return 0;
}

那如果我們要實現(xiàn)返回下標(biāo)的又該如何寫呢?
C語言中是不存在同時返回2個參數(shù)的方法的
不過
我們可以將兩個數(shù)的地址傳參,用解引用進(jìn)行對原數(shù)的修改

代碼實現(xiàn):

void find(int arr[][3], int* row, int* col, int target)
{
	int x = 0;
	int y = 2;
	while (x <= row && y >= 0)
	{
		if (arr[x][y] == target)
		{
			*row = x;
			*col = y;
			return;
		}
		else if (arr[x][y] < target)
			x++;
		else
			y--;
	}
	*row = -1;
	*col = -1;
}
int main()
{
	int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
	int target = 0;
	scanf("%d", &target);
	int x = 3;
	int y = 3;
	find(arr, &x, &y, target);
	if (x != -1)
		printf("找到了,下標(biāo)是%d %d\n", x, y);
	else
		printf("沒找到\n");
	return 0;
}

歡迎大家糾錯與討論文章來源地址http://www.zghlxwxcb.cn/news/detail-705877.html

到了這里,關(guān)于【C語言】每日一題(楊氏矩陣查找數(shù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【C語言】楊氏矩陣中尋找元素

    【C語言】楊氏矩陣中尋找元素

    楊氏矩陣 有一個數(shù)字矩陣,矩陣的每行從左到右是遞增的,矩陣從下到上遞增的(楊氏矩陣的定義),請編寫程序在這樣的矩陣中查找某個數(shù)字是否存在。 形如這樣的矩陣就是楊氏矩陣(本質(zhì)上是一個二維數(shù)組) 時間復(fù)雜度小于O(N) 因為題目要求時間復(fù)雜度小于O(N),所以

    2024年02月14日
    瀏覽(19)
  • C語言——oj刷題——楊氏矩陣

    目錄 1. 理解楊氏矩形的特點(diǎn) 2. 實現(xiàn)楊氏矩形查找算法 3. 編寫示例代碼 當(dāng)我們談到楊氏矩形時,我們指的是一種在二維數(shù)組中查找目標(biāo)元素的高效算法。它是由楊氏(Yan Shi)教授提出的,因此得名為楊氏矩形。 楊氏矩形問題的場景是這樣的:給定一個有序的二維數(shù)組,每一

    2024年02月20日
    瀏覽(12)
  • C語言題目:在楊氏矩陣中,尋找某個數(shù)字是否存在

    C語言題目:在楊氏矩陣中,尋找某個數(shù)字是否存在

    C語言題目:楊氏矩陣 ????????這種矩陣,只需要一個二維數(shù)組就可以創(chuàng)建,查找時也只需要在二維數(shù)組里查找就可以了。 ????????但是,如果這樣查找,嘗試過的人都知道,這樣就需要使用兩個循環(huán),此時的時間復(fù)雜度就是0(n2)了。 可是題目要求時間復(fù)雜度,為

    2023年04月08日
    瀏覽(15)
  • 每日一題 — 二分查找

    每日一題 — 二分查找

    704. 二分查找 - 力扣(LeetCode) ? 樸素二分查找模板: ?代碼:

    2024年04月23日
    瀏覽(23)
  • 每日一題(LeetCode)----二分查找(一)

    給定一個排序數(shù)組和一個目標(biāo)值,在數(shù)組中找到目標(biāo)值,并返回其索引。如果目標(biāo)值不存在于數(shù)組中,返回它將會被按順序插入的位置。 請必須使用時間復(fù)雜度為 O(log n) 的算法。 示例 1: 示例 2: 示例 3: 提示: 1 = nums.length = 104 -104 = nums[i] = 104 nums 為 無重復(fù)元素 的 升序 排列數(shù)

    2024年02月08日
    瀏覽(25)
  • 頭歌(C語言)-數(shù)據(jù)結(jié)構(gòu)與算法-查找-第1關(guān):實現(xiàn)折半查找

    頭歌(C語言)-數(shù)據(jù)結(jié)構(gòu)與算法-查找-第1關(guān):實現(xiàn)折半查找

    任務(wù)描述 相關(guān)知識 編程要求 測試說明 任務(wù)描述 本關(guān)要求通過補(bǔ)全函數(shù) BSL_FindKey 來實現(xiàn)在已排序的順序表中查找關(guān)鍵碼值為 key 的結(jié)點(diǎn)并返回該結(jié)點(diǎn)的編號。 相關(guān)知識 折半查找通常是針對順序存儲的線性表,線性表的結(jié)點(diǎn)按關(guān)鍵碼從小到大排序,后面稱之為折半查找的順序

    2024年02月10日
    瀏覽(105)
  • C語言的三個經(jīng)典題目:三步翻轉(zhuǎn)法、楊氏矩陣、輾轉(zhuǎn)相除法

    C語言的三個經(jīng)典題目:三步翻轉(zhuǎn)法、楊氏矩陣、輾轉(zhuǎn)相除法

    三步翻轉(zhuǎn)法是C語言中用來求旋轉(zhuǎn)字符串的一種進(jìn)階方法,我們以具體例題對其進(jìn)行介紹。 例:求一個字符串左旋n個字符后得到的新字符串 普通方法實現(xiàn) 我們知道,左旋一個字符一共分為三步: 將字符串的第一個字符存放到臨時變量中; 將字符串中除’\\0’外的所有字符整

    2024年02月02日
    瀏覽(22)
  • 二叉樹(下)+Leetcode每日一題——“數(shù)據(jù)結(jié)構(gòu)與算法”“對稱二叉樹”“另一棵樹的子樹”“二叉樹的前中后序遍歷”

    二叉樹(下)+Leetcode每日一題——“數(shù)據(jù)結(jié)構(gòu)與算法”“對稱二叉樹”“另一棵樹的子樹”“二叉樹的前中后序遍歷”

    各位CSDN的uu們你們好呀,今天小雅蘭的內(nèi)容仍然是二叉樹和Leetcode每日一題,下面,就讓我們進(jìn)入二叉樹的世界吧?。?! 這個題目需要重新定義一個函數(shù),函數(shù)參數(shù)需要有左子樹和右子樹,題目所給定的函數(shù)無法解決問題。 每個不為空的結(jié)點(diǎn),都可以認(rèn)為是一棵子樹的根?

    2024年02月16日
    瀏覽(29)
  • 二叉樹(中)+Leetcode每日一題——“數(shù)據(jù)結(jié)構(gòu)與算法”“劍指Offer55-I. 二叉樹的深度”“100.相同的樹”“965.單值二叉樹”

    二叉樹(中)+Leetcode每日一題——“數(shù)據(jù)結(jié)構(gòu)與算法”“劍指Offer55-I. 二叉樹的深度”“100.相同的樹”“965.單值二叉樹”

    各位CSDN的uu們你們好呀,今天繼續(xù)數(shù)據(jù)結(jié)構(gòu)與算法專欄中的二叉樹,下面,讓我們進(jìn)入二叉樹的世界吧?。?! 二叉樹(上)——“數(shù)據(jù)結(jié)構(gòu)與算法”_認(rèn)真學(xué)習(xí)的小雅蘭.的博客-CSDN博客 二叉樹鏈?zhǔn)浇Y(jié)構(gòu)的實現(xiàn) 二叉樹鏈?zhǔn)浇Y(jié)構(gòu)的實現(xiàn) 求二叉樹的高度 但是這種寫法有很大的問題

    2024年02月17日
    瀏覽(32)
  • (哈希表) 1002. 查找共用字符 ——【Leetcode每日一題】

    (哈希表) 1002. 查找共用字符 ——【Leetcode每日一題】

    難度:簡單 給你一個字符串?dāng)?shù)組 words ,請你找出所有在 words 的每個字符串中都出現(xiàn)的共用字符( 包括重復(fù)字符 ),并以數(shù)組形式返回。你可以按 任意順序 返回答案。 示例 1: 輸入:words = [“bella”,“l(fā)abel”,“roller”] 輸出:[“e”,“l(fā)”,“l(fā)”] 示例 2: 輸入:words = [“

    2024年02月08日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包