zoukankan      html  css  js  c++  java
  • LeetCode-11-6

    1.  Two Sum

    Given an array of integers, return indices of the two numbers such that they add up to a specific target.

    You may assume that each input would have exactly one solution, and you may not use the same element twice.

    Example:

    Given nums = [2, 7, 11, 15], target = 9,
    Because nums[0] + nums[1] = 2 + 7 = 9,
    return [0, 1].
    1. 用两个循环
    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 = 0 ; j < nums.length ; j++) {
                    if(i != j && target == nums[i] + nums[j]) {
                        res[0] = i;
                        res[1]  = j;
                    }
                }
            }
            return res;
        }
    }
    2. 用Map

    2. Two Sum II - Input array is sorted

    Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.

    The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.

    You may assume that each input would have exactly one solution and you may not use the same element twice.

    Input: numbers={2, 7, 11, 15}, target=9
    Output: index1=1, index2=2

    class Solution {
        public int[] twoSum(int[] numbers, int target) {
            Map<Integer,Integer> map  = new HashMap<>();
            for(int i = 0 ; i < numbers.length ; i++) {
                int tmp = target - numbers[i];
                if(map.containsKey(tmp)) {
                    return new int []{map.get(tmp),i+1};
                }
                map.put(numbers[i],i+1);
            }
            throw new IllegalArgumentException("No two sum solution");
        }
    }

    3. Two Sum IV - Input is a BST

    Given a Binary Search Tree and a target number, return true if there exist two elements in the BST such that their sum is equal to the given target.

    Example 1:

    Input: 
        5
       / 
      3   6
     /    
    2   4   7
    
    Target = 9
    
    Output: True
    class Solution {
        public boolean findTarget(TreeNode root, int k) {
            Set<Integer> set = new HashSet<>();
            return find(root,k,set);
        }
        
        public boolean find(TreeNode root, int k , Set<Integer> set) {
            if(root == null) return false;
            if(set.contains(k - root.val)) {
                return true;
            }
            set.add(root.val);
            return find(root.left,k,set) || find(root.right,k,set);
        }
    }

    4. Rotate Array

    Rotate an array of n elements to the right by k steps.

    For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].

    声明一个长度为原数组两倍的数组,然后拼接

    class Solution {
        public void rotate(int[] nums, int k) {
            int [] tmp = new int[nums.length * 2];
            for(int i = 0 ; i < nums.length ; i++) {
                tmp[i] = tmp[i + nums.length] = nums[i];
            }
            if(nums.length < k) {
                k = k % nums.length;
            }
            for(int i = 0 ; i < nums.length; i++) {
                nums[i] = tmp[i + nums.length - k];
            }
        }
    }

    5. Word Pattern

    Given a pattern and a string str, find if str follows the same pattern.

    Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.

    Examples:

    1. pattern = "abba", str = "dog cat cat dog" should return true.
    2. pattern = "abba", str = "dog cat cat fish" should return false.
    3. pattern = "aaaa", str = "dog cat cat dog" should return false.
    4. pattern = "abba", str = "dog dog dog dog" should return false.
      class Solution {
          public boolean wordPattern(String pattern, String str) {
              Map<Character,String> map = new HashMap<>();
              String [] strings = str.split(" ");
              if(pattern.length() != strings.length) {
                  return false;
              }
              String tmp = "";
              for(int i = 0 ; i < pattern.length();i++) {
                  if(map.containsKey(pattern.charAt(i))) {
                      if(!map.get(pattern.charAt(i)).equals(strings[i])) {
                          return false;
                      }
                  }else if(tmp.equals(strings[i])){
                      //确定他不是所有的value都一样的情况,比如dog dog dog dog和abba
                      return false;
                  } else{
                      map.put(pattern.charAt(i),strings[i]);
                      tmp = strings[i];
                  }
              }
              return true;
          }
      }

    6.  Isomorphic Strings

    Given two strings s and t, determine if they are isomorphic.

    Two strings are isomorphic if the characters in s can be replaced to get t.

    All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.

    For example,
    Given "egg""add", return true.

    Given "foo""bar", return false.

    Given "paper""title", return true.

    跟上面那个题一样的啊

    class Solution {
        public boolean isIsomorphic(String s, String t) {
            Map<Character,Character> map = new HashMap<>();
            if(s.length() != t.length()) {
                return false;
            }
            Character tmp = '1';
            for(int i =0 ; i < s.length();i++) {
                if(map.containsKey(s.charAt(i))) {
                    if(!map.get(s.charAt(i)).equals(t.charAt(i))) {
                        return false;
                    }
                }else if(tmp == t.charAt(i)) {
                    return false;
                }else{
                    map.put(s.charAt(i),t.charAt(i));
                    tmp = t.charAt(i);
                }
            }
            return true;
        }
    }
  • 相关阅读:
    实验三:Linux进程管理(HDU)
    ORA-25153错误及解决办法
    Python中的next()iter()函数详解
    python基础_格式化输出(%用法和format用法)(转载)
    DataTable ---导出Excel
    gridview-
    Web-Web/Json的请求与返回
    Sql-事务
    Windows-远程桌面
    Dev-GridView-对于gridview的列值的合计
  • 原文地址:https://www.cnblogs.com/qjx-2016/p/7792609.html
Copyright © 2011-2022 走看看