【刷题笔记】LeetCode

LeetCode

  • 01:两数之和
    • 树的遍历
      • 前序、中序、后序遍历

01:两数之和

一:暴力穷举:

class Solution {
     
    public int[] twoSum(int[] nums, int target) {
     
        
        int[] res = new int[2];

        for(int i = 0; i < nums.length;i++){
     
            for(int j = i+1; j < nums.length;j++){
     
                
                if(nums[i] + nums[j] == target){
     
                    res[0] = i;
                    res[1] = j;
                }
            }
        }
        return res;
    }
}

二:使用哈希表

class solution{
     
	public int[] twoSum(int[] nums, int target){
     
		
		Map<Integer, Integer> mapForQuery = new HashMap<>();
		
		for(int i = 0; i < nums.length; i++){
     
			if(mapForQuery.containsKey(target - nums[i])){
     
				return new int[]{
     mapForQuery.get(target-nims[i]),i};
			}
			mapForQuery.put(nums[i],i);
		}
		return new int[0];
	}
}

树的遍历

前序、中序、后序遍历

前序遍历:先根节点,左子节点,右子节点
中序遍历:先左子节点、根节点、右子节点
后序遍历:先左子节点、右子节点、根节点

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
     
    public List<Integer> preorderTraversal(TreeNode root) {
     
        
        List<Integer> res = new ArrayList<>();
        addValueOfTree(root,res);
        return res;
    }

    private void addValueOfTree(TreeNode root,List<Integer> res){
     

        if(root == null)
            //return可以表示返回值,也可以表示方法的结束(单独一个return;预计即可)
            return;
        //前序遍历
        res.add(root.val);
        addValueOfTree(root.left,res);
        //中序遍历
        //res.add(root.val);
        addValueOfTree(root.right,res);
        //后序遍历
        //res.add(root.val);
    }
}

你可能感兴趣的:(Leetcode题目汇总,java)