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;
        }
    }
  • 相关阅读:
    JS加密对应的c#解码
    Content-Type: application/www-form-urlencoded
    使用abcpdf分页设置的问题
    Windows10远程报错:由于CredSSP加密Oracle修正
    ueditorUE 去掉本地保存成功的提示框!
    js进制转换
    缓存穿透 缓存雪崩 缓存击穿
    DTcms 模版用vs2015或2017 打开编辑时候 粘贴出问题 代码被调整
    通俗简述 依赖倒置•控制反转•依赖注入•面向接口编程 的思想
    tcp/ip
  • 原文地址:https://www.cnblogs.com/qjx-2016/p/7792609.html
Copyright © 2011-2022 走看看