leetcode 34 最早出现和最后出现

class Solution {
    public int[] searchRange(int[] nums, int target) {
        int []ans={-1,-1} ;
        for(int i=0;i<nums.length;i++){
            if(nums[i]==target){
                ans[0]=i;
                break;
            }
        }
        for(int j=nums.length-1;j>=0;j--){
            if(nums[j]==target){
                ans[1]=j;
                break;
            }
        }
        return ans;
    }
}

 

leetcode 34 二分查找法 0ms 100%(update 2021-08-18)

class Solution {
  public int[] searchRange(int[] nums, int target) {
        int[] ans=new int[]{-1,-1};
        if(nums.length==0)
            return ans;
        
        int left=0; int right=nums.length;
        while(left<right){
            int mid=left+(right-left)/2;
            if(nums[mid]>=target)
                right=mid;
            else if(nums[mid]<target)
                left=mid+1;
        }
      if (left>=nums.length||nums[left]!= target) 
          return ans;
      
      ans[0]=ans[1]=left;
      
      left++;
      while(left<nums.length){
          if(nums[left]==target){
              ans[1]++;left++;}
          else{
              return ans;}
        }

        return ans;
    }
}

 

 

 

leetcode 20括号匹配

法一 判断几种情况

class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack();
        if(s.length()==0)
            return true;
        if(s.length()==1||s.charAt(0)==')'||s.charAt(0)==']'||s.charAt(0)=='}')
            return false;

        for(char c: s.toCharArray()) {
            if(c == '{' || c == '(' || c == '[') {
                stack.push(c);
            } else {
              if(c == '}'&&(stack.isEmpty() || stack.pop() != '{')) {
                     return false;}
              if(c == ']'&&(stack.isEmpty() || stack.pop() != '[')){
                     return false;}
              if(c == ')'&&(stack.isEmpty() || stack.pop() != '(')){
                     return false;}
            }
        }
        return stack.isEmpty();
    }
}

法二 改进版 好巧妙

public boolean isValid(String s) {
    Stack<Character> stack = new Stack<Character>();
    for (char c : s.toCharArray()) {
        if (c == '(')
            stack.push(')');
        else if (c == '{')
            stack.push('}');
        else if (c == '[')
            stack.push(']');
        else if (stack.isEmpty() || stack.pop() != c)
            return false;
    }
    return stack.isEmpty();
}

 leetcode700 寻找BST二叉搜索树中的元素

class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if( root.val==val||root==null)  return root;
        
        if(val>root.val)
            return searchBST(root.right,val);
        else
            return searchBST(root.left,val);
    }
}

 

 posted on 2018-11-20 13:40  alau  阅读(106)  评论(0编辑  收藏  举报