• 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;
        }
    }
  • 相关阅读:
    判断安卓或是IOS
    安卓、IOS内嵌H5的相互通信
    原生js tab选项卡粗略封装
    关于抓包
    vue学习的第一天——vue-router的相关使用
    关于jQuery插件封装的总结
    mvc生成静态页
    C#调用java代码
    汉字转16进制,汉字转10进制
    Model 类型为dynamic或者list<dynamic>
  • 原文地址:https://www.cnblogs.com/qjx-2016/p/7792609.html
Copyright © 2020-2023  润新知