141.給定乙個鍊錶,判斷鍊錶中是否有環。
public class solution
listnode fast=head;
listnode slow=head;
while(fast!=null&& fast.next!=null)
}return false;}}
142.給定乙個鍊錶,返回鍊錶中第乙個入環的節點,若沒有環,返回null;
public class solution
listnode fast=head;
listnode slow=head;
while(fast!=null&&fast.next!=null)
}if(fastnull||fast.nextnull)
while(fast!=head)
return fast;}}
16.給定兩個鍊錶,判斷兩個鍊錶是否有交點。
思路:設定兩個指標p1和p2.
p1從 heada 開始,p2從 headb 開始;
p1 p2分別從表頭開始每次向後移動乙個節點,移動到末尾處時,再換乙個鍊錶從頭向後移動,如果p1=p2,則證明有交點,否則返回null;
**如下:
public class solution
listnode p1=heada;
listnode p2=headb;
boolean isp1change=false;
boolean isp2change=false;
while(p1!=null||p2!=null)
p1=p1.next;
p2=p2.next;
if(p1.next==null)
if(p2.next==null)
if(isp1change&&isp2change&&p1==null&&p2==null)
}return null;
}
19,刪除鍊錶的倒數第n個節點
class solution
listnode p1=head;
listnode p2=head;
for(int i=0;i}
206.反轉鍊錶:如123456–>654321(迭代方法)
class solution
listnode root=new listnode(0);
listnode n=null;
while(head!=null)
return root.next;}}
206反轉鍊錶:如123456–>654321(遞迴方法)
class solution
listnode h=reverselist(head.next);
head.next.next=head;
head.next=null;
return h;}}
21.合併兩個有序鍊錶為乙個新鍊錶;
class solution else if(p1!=null&&p2null)else if(p1null&&p2!=null)else if(p1.val<=p2.val)else
p=p.next;
}return p3.next;}}
724給定乙個整數型別的陣列 nums,請編寫乙個能夠返回陣列「中心索引」的方法。
我們是這樣定義陣列中心索引的:陣列中心索引的左側所有元素相加的和等於右側所有元素相加的和。
如果陣列不存在中心索引,那麼我們應該返回 -1。如果陣列有多個中心索引,那麼我們應該返回最靠近左邊的那乙個
class solution
int sum=0;
int left=0;
int right=0;
for(int num:nums)
for(int i=0;i2.兩數相加:給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
示例:輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
原因:342 + 465 = 807
class solution
return root.next;
}
}
169.求陣列中的眾數;
class solution else}}
return max;}}
240. 搜尋二維矩陣 ii:編寫乙個高效的演算法來搜尋 m x n 矩陣 matrix 中的乙個目標值 target。該矩陣具有以下特性:
每行的元素從左到右公升序排列。
每列的元素從上到下公升序排列。
示例:現有矩陣 matrix 如下:
[[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]給定 target = 5,返回 true。
給定 target = 20,返回 false。
class solution
int row=matrix.length;
int col=matrix[0].length;
int x=row-1;
int y=0;
while(x>=0&&y}return false;}}
LeetCode鍊錶相關問題總結
獲取鍊錶的長度 兩種方法 listnode frist head int length 0 先獲得鍊錶的長度 while frist null 或者 listnode frist head int length 1 先獲得鍊錶的長度 while frist.next null 區別就是使用第二種方法...
LeetCode 鍊錶相關 重新理解
劍指 offer 24 反轉鍊錶 92774.3 簡單之前用python做過了,但理解的不透徹,重新用js再做一下。個人理解 指標指向 乙個值,表示指標裡存放的是這個值的位址,即箭頭末尾是箭頭方向的位址,所以兩個指標相等,表示位址相同,即是同乙個節點 首先,node.next 相當於鍊錶結構中的左 ...
LeetCode 鍊錶相關題目總結
之前已經對鍊錶相關常用操作進行了總結。在這裡,對 leetcode 與鍊錶相關的題目解答思路進行總結。1.兩個鍊錶,求是否有相交的節點並返回 方案一 將兩個鍊錶的各節點依次存入兩個物件中,然後雙層迴圈查詢是否存在有相同的節點 方案二 先求出兩個鍊錶各自長度,將長鍊錶先向尾部移動至和短鍊錶同樣長度的位...