【leetcode】100.(Easy)Same Tree
解題思路:
遞迴
提交程式碼:
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null&&q!=null) return false;
if(p!=null&&q==null) return false;
if(p==null&&q==null) return true;
if(p.val!=q.val) return false;
return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
}
}
執行結果:
相關推薦
【leetcode】100.(Easy)Same Tree
解題思路: 遞迴 提交程式碼: class Solution { public boolean isSameTree(TreeNode p, TreeNode q) { if(p==null&&q!=null) return false;
【leetcode】101.(Easy)Symmetric Tree
解題思路: morris遍歷+雙指標 以先序遍歷的方式遍歷根節點的左子樹,以“右子樹根節點左子樹”的方式遍歷右子樹 時間複雜度:O(n) 空間複雜度:O(1) 提交程式碼: class Solution{ public List<String> wordBreak(
【leetcode】69. (Easy)Sqrt(x)
解題思路: 二分法,同時使用double來記錄數字 此外後面討論區有個答案還挺好的,使用mid>x/mid?來進行判斷,避免了數字型別轉換。 提交程式碼: class Solution { public int mySqrt(int x) { if(x=
【leetcode】67.(Easy)Add Binary
提交程式碼: class Solution { public String addBinary(String a, String b) { int numA,numB,carry=0; int p1=a.length()-1,p2=b.length()-1;
【leetcode】66. (Easy)Plus One
提交程式碼: class Solution { public int[] plusOne(int[] digits) { int i,num; List<Integer> tmp=new ArrayList<Integer>();
【leetcode】58. (Easy)Length of Last Word
提交程式碼: class Solution { public int lengthOfLastWord(String s) { int len=0,p=s.length()-1; while(p>=0&&s.charAt(p)
【leetcode】88.(Easy)Merge Sorted Array
解題思路: 指標從後向前走,時間複雜度為O(m+n) 提交程式碼: class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int p1=m-1,p2=n-
【leetcode】35. (Easy)Search Insert Postion(JAVA)
題目連結 解題思路: 還是折半查詢,設定三個指標分別指向陣列兩邊和中間,如果中間的值是要找的值直接返回位置座標; 如果左指標和右指標重合,說明沒有找到這個數,可以分為3個情況: 目標大於最大數時,此時指標right在陣列最右位置,返回right的下一個位置;
【leetcode】104.(Easy)Maximum Depth of Binary Tree
解題思路: bfs或dfs 提交程式碼:bfs class Solution { public int maxDepth(TreeNode root) { if(root==null) return 0; int
【leetcode】122.(Easy)Best Time to Buy and Sell Stock II
解題思路: 迭代更新 時間複雜度:O(n) 提交程式碼:滑動視窗 class Solution { public int maxProfit(int[] prices) { if(prices.length==0) return 0;
【leetcode】121.(Easy)Best Time to Buy and Sell Stock
解題思路: 方法一:滑動視窗 時間複雜度:O(n) 方法二:迭代更新 每當有更低價時更新買價, 每當有更高價時更新賣價, 期間更新每一次的買價和賣價的差價 另一方面,為了避免用“今天的低價”購買“昨天的高價”,在有更低價時同時更新買價和賣價(繼而當
【leetcode】119.(Easy)Pascal's Triangle II
解題思路: 維護一個一維list表 時間複雜度:O(n1) n1是到當前排為止所有元素的個數 空間複雜度:O(n2) n2是層數 提交程式碼: class Solution { public List<Integer> getRow(int rowIndex)
【leetcode】118.(Easy)Pascal's Triangle
解題思路: 遞迴 時間複雜度:O(n) n是最終所有元素的個數和 提交程式碼: class Solution { public List<List<Integer>> generate(int numRows) { List<L
【leetcode】141.(Easy)Linked List Cycle
解題思路: 維護一個map,如果當前節點的下一個節點是已經存在的節點(map中的節點)則連結串列有迴圈 提交程式碼: class Solution { public boolean hasCycle(ListNode head) { if(head==n
【leetcode】145.(Hard)Binary Tree Postorder Traversal
解題思路: morris後序遍歷 這篇部落格的程式碼挺好的: https://blog.csdn.net/zuochao_2013/article/details/78538729 時間複雜度:O(n) morris演算法會遍歷每個節點的左子樹的右邊界兩次,所有的右邊界加起來是所有的結點
【leetcode】124.(Hard)Binary Tree Maximum Path Sum
解題思路: 回溯 對於樹的一個結點來說,[左子樹值]、[右子樹值]、[左子樹+右子樹+當前結點值],這三種組合中,必然有一個最大值,將這個最大值儲存在maxValue[0]中,實時更新即可。 函式maxValue返回的是如果一定要包含當前結點值時的最大數值。 提交程式碼: cl
【leetcode】94.(Medium)Binary Tree Inorder Traversal
解題思路: morris遍歷 提交程式碼:回溯 class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> ans=n
【leetcode】103.(Medium)Binary Tree Zigzag Level Order Traversal
解題思路: 維護兩個棧,輪番記錄每一層的結點 時間複雜度:O(n) 空間複雜度:O(n) 提交程式碼: class Solution { public List<List<Integer>> zigzagLevelOrder(TreeNod
【leetcode】102.(Medium)Binary Tree Level Order Traversal
解題思路: 用兩個佇列輪番記錄每一層的結點 時間複雜度:O(n) 空間複雜度:O(n) 提交程式碼: class Solution { public List<List<Integer>> levelOrder(TreeNode root)
【leetcode】50.(Medium )Pow(x,n)
題目連結 解題思路: 這道題的意思就是求x的n次方。 如果xx求下去,求n-1次,這樣是超時的。 我的思路是,首先求xx,然後n就可以減少2,然後求(xx)(x*x),這樣n就可以減少4… 就是n不是-1、-1、-1…這樣減下去,而是-2、-4、-8…這樣減下去 迭代cnt次後,