雙指標法的例題彙總(C 力扣)

2021-10-10 07:58:49 字數 2813 閱讀 4311

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。

示例 1:

輸入:nums = [2,7,11,15], target = 9

輸出:[2,7] 或者 [7,2]

示例 2:

輸入:nums = [10,26,30,31,47,60], target = 40

輸出:[10,30] 或者 [30,10]

思路:利用陣列排好序的特性。x,y分別指向陣列的兩端。

當nums[x] + nums[y] == target時,有解。

當nums[x] + nums[y] > target時,y–。這樣能使兩者之和減小。

當nums[x] + nums[y] < target時,x++。這樣能使兩者之和增大。

class

solution;}

else

if(s>target)

else

}return vector<

int>;}

};

反轉字串

編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 char 的形式給出。

不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列、使用 o(1) 的額外空間解決這一問題。

你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。

示例 1:

輸入:[「h」,「e」,「l」,「l」,「o」]

輸出:[「o」,「l」,「l」,「e」,「h」]

示例 2:

輸入:[「h」,「a」,「n」,「n」,「a」,「h」]

輸出:[「h」,「a」,「n」,「n」,「a」,「h」]

class

solution}}

;

反轉鍊錶

反轉乙個單鏈表。

示例:輸入: 1->2->3->4->5->null

輸出: 5->4->3->2->1->null

高階:你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?

/**

*definition

forsingly-linked

list.*

struct

listnode*}

;*/class

solution

return

slow;}

};

167兩數之和 ii - 輸入有序陣列

給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。

函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。

說明:返回的下標值(index1 和 index2)不是從零開始的。

你可以假設每個輸入只對應唯一的答案,而且你不可以重複使用相同的元素。

示例:輸入: numbers = [2, 7, 11, 15], target = 9

輸出: [1,2]

解釋: 2 與 7 之和等於目標數 9 。因此 index1 = 1, index2 = 2 。

class

solution

else

if(numbers[i]

+numbers[j]

else

}return result;}}

;

給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。

說明:本題中,我們將空字串定義為有效的回文串。

示例 1:

輸入: "a man, a plan, a canal: panama"

輸出: true

示例 2:

輸入: "race a car"

輸出: false

```handlebars

class solution

//去掉空格和符號

string str="";

for(int j=0;j='a' && s[j]<='z' )|| (s[j]>='0' && s[j]<='9')) str+=s[j];

}//注意j1不是n-1

int i1=0,j1=str.size()-1;

//判斷是否是回文字串,注意下面是str

//不能是i1!=j1,因為如果只有乙個空格,上面去掉空格後,i1=0,j1=0-1=-1,他們不相等導致進入迴圈

while(i1編寫乙個函式,以字串作為輸入,反轉該字串中的母音字母。

示例 1:

輸入:「hello」

輸出:「holle」

示例 2:

輸入:「leetcode」

輸出:「leotcede」

class

solution

return s;

}bool

yuanyin

(char s)

};

還有一種方法:

string中find()返回值是字母在母串中的位置(下標記錄),如果沒有找到,那麼會返回乙個特別的標記npos。(返回值可以看成是乙個int型的數)

class

solution

return s;}}

;

再另外,字串的大小寫可以直接呼叫庫函式:

這個判斷函式更簡潔一點

bool

is_vowel

(char c)

力扣 16 最接近的三數之和, 雙指標法

題目 給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target 1.與 target 最接近的三個數的和為 2....

雙指標法的常見應用

標籤 演算法 pivot null面試 2012 08 10 10 09 3247人閱讀收藏 舉報 資料結構 演算法 20 所謂雙指標,指的是在遍歷物件的過程中,不是普通的使用單個指標進行訪問,而是使用兩個相同方向或者相反方向的指標進行掃瞄,從而達到相應的目的。換言之,雙指標法充分使用了陣列有序這一...

移除鍊錶元素 雙指標法 C

思路 1.判斷head是否為空,若空返回null or nullptr。鍊錶問題常用 2.pre和cur分別指向第乙個節點和第二個節點。3.cur判斷是否相等,若相等,一直刪下去 若不相等,兩個節點同時以相同速度往尾部方向移動。跳出迴圈。4.這時,相當於除了第乙個節點沒被判斷外,鍊錶其他節點都進行了...