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); } }