欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言雙指針算法朋友過情人節(jié)我過算法

 更新時間:2022年02月14日 14:11:15   作者:喬喬家的龍龍  
這篇文章主要為大家介紹了C語言中雙指針算法的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助

雙指針

首先咱得知道何為雙指針,聽起來很上流,其實有手就行。

雙指針,指的是在遍歷對象的過程中,不是普通的使用單個指針進行訪問,而是使用兩個相同方向(快慢指針)或者相反方向(對撞指針)的指針進行掃描,從而達到相應的目的。

換言之,雙指針法充分使用了數(shù)組有序這一特征,當遇到有序數(shù)組時,應該優(yōu)先想到雙指針來解決問題,因兩個指針的同時遍歷會減少空間復雜度和時間復雜度從而在某些情況下能夠簡化運算

在這里插入圖片描述

對撞指針

類似于相遇問題,對撞指針是指在有序數(shù)組中,將指向最左側的索引定義為左指針,最右側的定義為右指針,然后分別從兩側出發(fā),相向遍歷鏈表,這個過程就形象化為對撞,習慣上就將左右指針定義為 left 和 right,我們給出一個大致代碼邏輯:

void hit(int *arr,int arrsize)
{
int* left = arr;
int* right = arr + arrsize -1;
while(left<=right)
{
條件語句;
left++;
條件語句;
right--;
}
}

對撞指針適用于二分查找,鏈表對象求和等,也就是說當你遇到題目給定有序數(shù)組時,應該第一時間想到的思路就是使用對撞指針。

快慢指針

類似于龜兔賽跑,快慢指針是兩個鏈表上的指針從同一節(jié)點出發(fā),其中一個指針前進速度比另一個快,兩個指針以不同的策略移動,直到兩個指針的值達成某個條件為止,如圖(ppt繪圖+手殘勿噴):

在這里插入圖片描述

我們同樣將左右指針定義為 slow,fast,要實現(xiàn)其中一個指針比另一個快,我們無可厚非就兩種方法:

1.同時起步,fast 比 slow 多走n步;

2.fast 先走,slow后走;

那我們給出他的邏輯代碼:
同時走:

void speed(int *arr)
{
   int* fast = arr;
   int* slow = arr;
   while(slow<fast)
   {
   條件;
   slow++(非條件下fast++);
   }
}

先后走:

void speed(int *arr)
{
int* slow =arr;
int* fast = arr;
while(條件1)
{
slow++;
}
while(條件2)
{
fast++;
}
}

真題實戰(zhàn)

1.調整數(shù)組順序使奇數(shù)位于偶數(shù)前面

int* reOrderArray(int* array, int arrayLen, int* returnSize ) {
  *returnSize = arrayLen;
   int* left = array;
	int* right = array + arrayLen - 1;
	while (left < right)//(1)
	{
		while (left < right && *left % 2 == 1)//(2)
			left++;
		while (left < right && *right % 2 == 0)//(3)
			right--;
		if (left < right)//(4)
		{
			int tmp = *left;
			*left = *right;
			*right = tmp;
		}
		left++;
		right--;
	}
	return array;
}

這道題就是典型的對撞指針,我們遍歷完整個數(shù)組時,左右指針路程各自一半,只需要 left 尋找奇數(shù),right 尋找偶數(shù)做交換即可。

==Ps.==這里的* returnSize

2.Leetcode 真題:移除元素

int removeElement(int* nums, int numsSize, int val) {
	int* p1 = nums;
	int* p2 = nums;
	int sz = numsSize;
	for (; p1 < nums + numsSize; p1++)
	{
		if (*p1 != val)
		{
			*p2 = *p1;
			*p2++;
		}
		else
			sz--;
	}
	return sz;
}  

這是典型的快慢指針,第一個指針用來遍歷數(shù)組元素,判斷是不是要刪除的數(shù),第二個指針用來存放數(shù)字。如果第一個指針指向的是要刪除的元素,那么輸出用來存放輸出數(shù)組元素個數(shù)的整形變量sz就自減 1,然后第一個指針向后移動一位,第二個指針不動;如果第一個指針指向的不是要刪除的數(shù),那么就把這個數(shù)放到第二個指針指向的位置,然后第一個指針和第二個指針都向后移動一位。重復操作直到第一個指針遍歷整個數(shù)組,此方法的時間復雜度是O(n)。

今天就到這里了,摸了家人們,情人節(jié)快樂!更多關于C語言雙指針算法的資料請關注腳本之家其它相關文章!

相關文章

  • OpenCV實現(xiàn)區(qū)域分割和區(qū)域生長

    OpenCV實現(xiàn)區(qū)域分割和區(qū)域生長

    區(qū)域分割是圖像處理中一個重要的任務,本文主要介紹了OpenCV實現(xiàn)區(qū)域分割和區(qū)域生長,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-02-02
  • VC++時鐘函數(shù)

    VC++時鐘函數(shù)

    VC中提供了很多關于時間操作的函數(shù),編寫程序時我們可以跟據(jù)定時的不同精度要求選擇不同的時間函數(shù)來完成定時和計時操作
    2015-06-06
  • C++ 實現(xiàn)靜態(tài)單鏈表的實例

    C++ 實現(xiàn)靜態(tài)單鏈表的實例

    這篇文章主要介紹了C++ 實現(xiàn)靜態(tài)單鏈表的實例的相關資料,需要的朋友可以參考下
    2017-06-06
  • 關于C++虛函數(shù)與靜態(tài)、動態(tài)綁定的問題

    關于C++虛函數(shù)與靜態(tài)、動態(tài)綁定的問題

    這篇文章主要介紹了C++虛函數(shù)與靜態(tài)、動態(tài)綁定,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • C語言示例講解while循環(huán)語句的用法

    C語言示例講解while循環(huán)語句的用法

    在不少實際問題中有許多具有規(guī)律性的重復操作,因此在程序中就需要重復執(zhí)行某些語句。一組被重復執(zhí)行的語句稱之為循環(huán)體,C語言while語句可以是單個語句,也可以是一個語句塊,其條件可以是任意表達式,true是任意非零值,當條件為真時,循環(huán)進行迭代
    2022-06-06
  • QT自定義QTextEdit實現(xiàn)大數(shù)據(jù)的實時刷新顯示功能實例

    QT自定義QTextEdit實現(xiàn)大數(shù)據(jù)的實時刷新顯示功能實例

    TextEdit是我們常用的Qt控件,用來顯示文本信息,下面這篇文章主要給大家介紹了關于QT自定義QTextEdit實現(xiàn)大數(shù)據(jù)的實時刷新顯示功能的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • C++右值引用與move和forward函數(shù)的使用詳解

    C++右值引用與move和forward函數(shù)的使用詳解

    為了支持移動操作,新標準引入了一種新的引用類型——右值引用(rvalue reference)。所謂右值引用就是必須綁定到右值的引用,這篇文章主要介紹了C++右值引用與move和forward的使用
    2022-08-08
  • C++實現(xiàn)通訊錄管理系統(tǒng)項目

    C++實現(xiàn)通訊錄管理系統(tǒng)項目

    這篇文章主要為大家詳細介紹了C++實現(xiàn)通訊錄管理系統(tǒng)項目,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++?AnimeGAN實現(xiàn)照片一鍵動漫化

    C++?AnimeGAN實現(xiàn)照片一鍵動漫化

    AnimeGAN是是由神經(jīng)網(wǎng)絡風格遷移加生成對抗網(wǎng)絡(GAN)而成,它是基于CartoonGAN的改進,并提出了一個更加輕量級的生成器架構。本文將介紹如何運用AnimeGAN實現(xiàn)照片一鍵動漫化,需要的可以參考一下
    2021-11-11
  • C語言之循環(huán)語句詳細介紹

    C語言之循環(huán)語句詳細介紹

    大家好,本篇文章主要講的是C語言之循環(huán)語句詳細介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評論