數(shù)據(jù)結構類題目
LinkedList
003-從尾到頭打印鏈表
014-鏈表中倒數(shù)第k個結點
015-反轉鏈表
```java
/**
? ? 輸入一個鏈表,反轉鏈表后,輸出新鏈表的表頭。
? ? */
? ? public ListNode ReverseList(ListNode head) {
? ? ? ? if(head == null || head.next == null){
? ? ? ? ? ? return head;
? ? ? ? }
? ? ? ? ListNode pre=null;//前一個節(jié)點
? ? ? ? ListNode next = null;//下一個節(jié)點
? ? ? ? while(head !=null){
? ? ? ? ? ? next = head.next;//記錄當前節(jié)點的下一個節(jié)點
? ? ? ? ? ? head.next = pre;//將當前節(jié)點指向前一個節(jié)點,完成當前節(jié)點反轉
? ? ? ? ? ? pre = head;//pre往下一個節(jié)點鄒
? ? ? ? ? ? head = next;//當前節(jié)點往下走
? ? ? ? }
? ? ? ? return pre;
? ? }
```
016-合并兩個或k個有序鏈表
025-復雜鏈表的復制
036-兩個鏈表的第一個公共結點
055-鏈表中環(huán)的入口結點
056-刪除鏈表中重復的結點
Tree
004-重建二叉樹
017-樹的子結構
018-二叉樹的鏡像
022-從上往下打印二叉樹
023-二叉搜索樹的后序遍歷序列
024-二叉樹中和為某一值的路徑
026-二叉搜索樹與雙向鏈表
038-二叉樹的深度
039-平衡二叉樹
057-二叉樹的下一個結點
058-對稱的二叉樹
059-按之字形順序打印二叉樹
060-把二叉樹打印成多行
061-序列化二叉樹
062-二叉搜索樹的第k個結點
Stack & Queue
005-用兩個棧實現(xiàn)隊列
020-包含min函數(shù)的棧
021-棧的壓入、彈出序列
044-翻轉單詞順序列(棧)
064-滑動窗口的最大值(雙端隊列)
Heap
029-最小的K個數(shù)
Hash Table
034-第一個只出現(xiàn)一次的字符
圖
065-矩陣中的路徑(BFS)
066-機器人的運動范圍(DFS)
具體算法類題目
斐波那契數(shù)列
007-斐波拉契數(shù)列
008-跳臺階
009-變態(tài)跳臺階
010-矩形覆蓋
搜索算法
001-二維數(shù)組查找
public boolean Find(int target, int [][] array) {
? ? ? ? if(array == null){
? ? ? ? ? ? return false;
? ? ? ? }
? ? ? ? int rows = array.length;
? ? ? ? if(rows == 0){
? ? ? ? ? ? return false;
? ? ? ? }
? ? ? ? int cols = array[0].length;
? ? ? ? if(cols == 0){
? ? ? ? ? ? return false;
? ? ? ? }
? ? ? ? // 右上
? ? ? ? int row = 0;? //起始行
? ? ? ? int col = cols-1;? ? //最大列
? ? ? ? while(row<rows && col>=0){? ? //注意
? ? ? ? ? ? if(array[row][col] < target){
? ? ? ? ? ? ? ? row++;? ? ? ? //注意
? ? ? ? ? ? }else if(array[row][col] > target){
? ? ? ? ? ? ? ? col--;? ? ? //注意
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? return true;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return false;
? ? }
006-旋轉數(shù)組的最小數(shù)字(二分查找)
037-數(shù)字在排序數(shù)組中出現(xiàn)的次數(shù)(二分查找)
全排列
027-字符串的排列
動態(tài)規(guī)劃
030-連續(xù)子數(shù)組的最大和
052-正則表達式匹配(我用的暴力)
回溯
065-矩陣中的路徑(BFS)
066-機器人的運動范圍(DFS)
排序
035-數(shù)組中的逆序對(歸并排序)
029-最小的K個數(shù)(堆排序)
029-最小的K個數(shù)(快速排序)
位運算
011-二進制中1的個數(shù)
012-數(shù)值的整數(shù)次方
040-數(shù)組中只出現(xiàn)一次的數(shù)字
其他算法
002-替換空格
013-調整數(shù)組順序使奇數(shù)位于偶數(shù)前面
028-數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字
031-整數(shù)中1出現(xiàn)的次數(shù)(從1到n整數(shù)中1出現(xiàn)的次數(shù))
032-把數(shù)組排成最小的數(shù)
033-丑數(shù)
041-和為S的連續(xù)正數(shù)序列(滑動窗口思想)
042-和為S的兩個數(shù)字(雙指針思想)
043-左旋轉字符串(矩陣翻轉)
046-孩子們的游戲-圓圈中最后剩下的數(shù)(約瑟夫環(huán))
051-構建乘積數(shù)組