反轉陣列
leecode242. 有效的字母異位詞
方法:
建立26位的int陣列,用來存放對應第幾個字母的個數
遍歷 s讓相應的值++ ,遍歷 t讓相應的值 - -
最後如果陣列中有乙個值不為0則返回false
//給定兩個字串 s 和 t ,編寫乙個函式來判斷 t 是否是 s 的字母異位詞。
//// 示例 1:
//// 輸入: s = "anagram", t = "nagaram"
//輸出: true
// //
// 示例 2:
//// 輸入: s = "rat", t = "car"
//輸出: false
//// 說明:
//你可以假設字串只包含小寫字母。
class
solution
char
chars1 = t.
tochararray()
;for
(int i =
0; i < chars1.length; i++
)for
(int i =
0; i < num.length; i++
)return
true;}
}
結題技巧
利用快慢指標,有時候需要用到三個指標
鍊錶的反轉,尋找倒數第k個元素,判斷鍊錶是否有環
構建乙個虛假的煉表頭
給定排好序的鍊錶,將他們整合 並且排序
將鍊錶的奇偶數按原定順序分離,生成前半部分為奇數,後半部分為偶數的鍊錶
在解決鍊錶的題目時,在紙上或者白板上畫出節點之間的相互關係
leecode25. k個一組翻轉鍊錶
方法:
用三個指標,前指標,當前指標,下乙個指標
開始前指標指向第乙個指標的上乙個,當前指標和下乙個指標遍歷,進行翻轉,結束後,下乙個指標指向了下乙個k的頭,當前指標(原來的尾,現在的頭)與前指標相連,原來的頭(現在的尾)與下乙個指標相連。
繼續遍歷下乙個k。
//給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。
//// k 是乙個正整數,它的值小於或等於鍊錶的長度。
//// 如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。
////
//// 示例:
//// 給你這個鍊錶:1->2->3->4->5
//// 當 k = 2 時,應當返回: 2->1->4->3->5
//// 當 k = 3 時,應當返回: 3->2->1->4->5
class
solution
return dummy.next;
}void
reserve
(listnode now)
}}
//請根據每日 氣溫 列表,重新生成乙個列表。對應位置的輸出為:要想觀測到更高的氣溫,至少需要等待的天數。如果氣溫在這之後都不會公升高,請在該位置用 0 來代替。
// //
// 例如,給定乙個列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的輸出應該是 [1, 1, 4, 2
//, 1, 1, 0, 0]。
class
solution
}public
int[
]dailytemperatures
(int
t)stack.
push
(new
entry
(t[i]
,i));}
return result;
}}
雙端佇列//給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗內的 k 個數字。滑動視窗每次只向右移動一位。
//// 返回滑動視窗中的最大值。
//// 示例:
//// 輸入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3
//輸出: [3,3,5,5,6,7]
//解釋:
//// 滑動視窗的位置 最大值
//--------------- -----
//[1 3 -1] -3 5 3 6 7 3
// 1 [3 -1 -3] 5 3 6 7 3
// 1 3 [-1 -3 5] 3 6 7 5
// 1 3 -1 [-3 5 3] 6 7 5
// 1 3 -1 -3 [5 3 6] 7 6
// 1 3 -1 -3 5 [3 6 7] 7
class
solution
while
(!queue.
isempty()
&& queue.
getlast()
) queue.
add(nums[i]);
} result.
add(queue.
getfirst()
);for(
int i = k; i ) queue.
add(nums[i]);
if(queue.
getfirst()
==nums[i-k]
) queue.
removefirst()
; result.
add(queue.
getfirst()
);}int
rr=
newint
[result.
size()
];for(
int i =
0; i )return rr;
}}
void
toarray
(treenode root,list
list)
leecode230.二叉搜尋中第k小的元素
方法:
二叉樹中序遍歷,新增到list中 返回第k-1個元素
如果這道題變成了 搜尋第k大的元素:則將其變成了反向的中序遍歷:右 ;add();左;
//給定乙個二叉搜尋樹,編寫乙個函式 kthsmallest 來查詢其中第 k 個最小的元素。
//// 說明:
//你可以假設 k 總是有效的,1 ≤ k ≤ 二叉搜尋樹元素個數。
//// 示例 1:
//// 輸入: root = [3,1,4,null,2], k = 1
// 3
// / \
// 1 4
// \
// 2
//輸出: 1
class
solution
void
toarray
(treenode root,list
list)
}
路徑規劃演算法學習Day1
解決最短路徑問題的演算法有很多,dijkstra演算法是其中最為有效的一種。它是於1959年荷蘭計算機科學家edsger dijkstra提出的 能夠解決 單結點 所有結點 間的最短路徑問題。首先以某一結點 源結點 作為出發點,在與其相連且尚未被加入的結點裡,選擇加入離出發點距離最短的結點,並且通過...
力扣演算法 day1 今天的演算法學習
感覺自己前兩天發布的時候忘了提自己為什麼要開這個系列了,特於19 3 23來補一下 主要是前兩天想去面實習生,面了個大公司,然後一上來問我最簡單的演算法題我就不會。感覺太給川大人丟臉了,得努力了呢 好了,下面請看官們看正文 我是分割線 13.羅馬數字轉整數 羅馬數字包含以下七種字元 i,v,x,l,...
排序演算法Day1
include mysort.h include include include include include include include using namespace std 插入排序 時間複雜度 平均哦o n 2 完全有序時o n 空間複雜度o 1 穩定 思想 把待排序列分為有序序列和無...