zoukankan      html  css  js  c++  java
  • LeetCode 2

    No1

      

    Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

    You may assume no duplicates in the array.

    个人:

    public int searchInsert(int[] nums, int target) {
    		for(int i=0;i<nums.length;i++){
    			if(nums[i]>=target){
    				return i;
    			}
    		}
    		return nums.length;
    
    	}
    

      优秀代码: public int searchInsert(int[] A, int target) {        int low = 0, high = A.length-1;

            while(low<=high){
                int mid = (low+high)/2;
                if(A[mid] == target) return mid;
                else if(A[mid] > target) high = mid-1;
                else low = mid+1;
            }
            return low;
        }




    No2

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

    Note:
    You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.



      public void merge(int[] nums1, int m, int[] nums2, int n) {
    		int length=m+n-1,x=m-1,y=n-1;
    		while(x>-1 && y>-1){
    			nums1[length--] = (nums1[x]>nums2[y]) ? nums1[x--] : nums2[y--];
    		}
    		while(y>-1){
    			nums1[length--]=nums2[y--];
    		}
    	}
    

      

    No3 

      Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

      For example,
      "A man, a plan, a canal: Panama" is a palindrome.
      "race a car" is not a palindrome.

      Note:
      Have you consider that the string might be empty? This is a good question to ask during an interview.

      For the purpose of this problem, we define empty string as valid palindrome.

      

      

    public static boolean isPalindrome(String s) {
    		char[] str=s.toLowerCase().toCharArray();
    		StringBuilder stringBuilder=new StringBuilder();
    		for(int i=0;i<str.length;i++){
    			if(Character.isLetterOrDigit(str[i])&&str[i]!=' '){
    				stringBuilder.append(str[i]);
    			}
    		}
    		str=stringBuilder.toString().toCharArray();
    		if(str.length<=1)return true;
    		int start=0;
    		int length=str.length-1;
    
    		while(start<length){
    			if(str[start]!=str[length]){
    				return false;
    			}else {
    				start++;
    				length--;
    			}
    		}
    		if(start>=length) return true;
    		return false;
    	}
    

      

    public static boolean isPalindrome(String s) {
    		String str=s.replaceAll("[^A-Za-z0-9]","").toLowerCase();
    		String stringBUffer=new StringBuffer(str).reverse().toString();
    		return str.equals(stringBUffer);
    	}
    

      

     No3 

      Given a binary tree, find its maximum depth.

      The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

          

    public int maxDepth(TreeNode root) {
            if(root==null){
                return 0;
            }
            return 1+Math.max(maxDepth(root.left),maxDepth(root.right));
        }
    

      小心得:在求有一定规律结构时 可用递归去实现  而不用每个分支都储存 然后求size  。很屎的想法

     
    No4 

    You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

    
    

    You may assume the two numbers do not contain any leading zero, except the number 0 itself.

    
    

    Example

    
    
    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8
    Explanation: 342 + 465 = 807.
     
    	public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    		ListNode p1 = l1, p2 = l2;
    		ListNode result = new ListNode(0);
    		ListNode pk=result;
    		int c = 0;
    		while (p1 != null || p2 != null || c == 1) {
    			int num1 =( p1 == null ? 0 : p1.val);
    			int num2 =( p2 == null ? 0 : p2.val);
    			int k = num1 + num2 + c;
    			c = k / 10;
    			pk.next = new ListNode(k % 10);
    			pk = pk.next;
    			if (p1 != null) {p1 = p1.next;}
    			if (p2 != null) {p2 = p2.next;}
    		}
    		return result.next;//不能反回pk.next;   pk仅将指针只想result的堆  所以数据还存在result指向的堆  否则报错
    	}
    
    
    

      

    
    
  • 相关阅读:
    ubuntu 安装FoxitReader福昕阅读器(转载)
    添加中文字库
    操作系统常用调度算法(转载https://www.cnblogs.com/kxdblog/p/4798401.html)
    2802:小游戏利用bfs来实现
    2802:小游戏
    适合使用并行的一种bfs
    (转载)关于usr/bin/ld: cannot find -lxxx问题总结
    gcc5.4报错对‘std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()’未定义的引用
    centos7如何安装gcc5.4
    将含有makefile文件的源码加入Eclipse工程
  • 原文地址:https://www.cnblogs.com/KingIceMou/p/7825626.html
Copyright © 2011-2022 走看看