實現 int sqrt(int x) 函式。
計算並返回 x 的平方根,其中 x 是非負整數。
由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。
思路牛頓迭代 x=(x+a/x)
二分的初始區間取0-x/2,因為輸入的x是整數。
牛頓迭代
class solution
double sqrts(double x)
}
二分法class solution
}max[i]=t+1;
ans=math.max(ans,max[i]);
}return ans;
}}
dpclass solution else
}return dp[n];
}}
遞迴法class solution
listnode mergesort(listnode head)
listnode head2=slow.next;
slow.next=null;
listnode left=mergesort(head);
listnode right=mergesort(head2);
return merge(left,right);
}listnode merge(listnode l1,listnode l2)
listnode head2=slow.next;
slow.next=null;
listnode l1=sortlist(head);
listnode l2=sortlist(head2);
if(l1==null||l2==null)return (l1==null)?l2:l1;
listnode pre=new listnode(0);
listnode cur=pre;
while(l1!=null&&l2!=null)else
}cur.next=(l1==null)?l2:l1;
return pre.next;
}}
(鍊錶)LC環形鍊錶
使用雜湊表記錄已經走過節點,如果遍歷到已經訪問的,則說明有環 public boolean hascycle listnode head return false 對於判斷鍊錶 陣列是否有環,可以使用floyd判環演算法 龜兔賽跑演算法 使用快慢指標,快指標每次走兩步,慢指標每次走一步,如果快指標走...
LC 交換鍊錶節點
將給定的鍊錶中每兩個相鄰的節點交換一次,返回鍊錶的頭指標 例如,給出1 2 3 4,你應該返回鍊錶2 1 4 3。你給出的演算法只能使用常量級的空間。你不能修改列表中的值,只能修改節點本身。struct listnode class solution listnode phead newlistno...
lc 刪除鍊錶中的節點
題目很簡單!就是理解題意有點,emmmmm.就想著沒傳入head鍊錶怎麼個刪除法,都不能知道被刪除元素前面的指標,所以就不能通過更改next指標來刪除。只能通過把被刪除節點後面的元素往前移動,並刪除最後乙個節點即可。definition for singly linked list.struct l...