首页 > 代码库 > 新的一周继续加油!
新的一周继续加油!
(1)Two Sum
解题思路:
使用hashmap,将(目标和-当前元素值,当前元素位置)存入,当遇到(目标和-当前元素值)的值时,取出i即可。
1 public class Solution { 2 public int[] twoSum(int[] nums, int target) { 3 HashMap<Integer,Integer> map = new HashMap<>(); 4 for (int i = 0; i < nums.length; i++) { 5 if (map.get(nums[i]) != null) { 6 int[] result = {map.get(nums[i]), i}; 7 return result; 8 } 9 map.put(target - nums[i], i); 10 } 11 int[] result= {}; 12 return result; 13 } 14 }
注意map.get 和map.put的使用
(2)414. Third Maximum Number
(3)Rotate Array
代码如下:
1 public class Solution { 2 private void reverse(int[] nums, int start, int end) { 3 while (start < end) { 4 int temp = nums[start]; 5 nums[start] = nums[end]; 6 nums[end] = temp; 7 start++; 8 end--; 9 } 10 } 11 public void rotate(int[] nums, int k) { 12 if (nums.length == 0) { 13 return; 14 } 15 k = k % nums.length; 16 //Time Limit Exceeded 17 //reverse(nums, 0, nums.length - 1); 18 //reverse(nums, 0, k - 1); 19 //reverse(nums, k, nums.length - 1); 20 //Accepted 21 reverse(nums, 0, nums.length - k - 1); 22 reverse(nums, nums.length - k, nums.length - 1); 23 reverse(nums, 0, nums.length - 1); 24 } 25 }
解题思路:
先将k转换成[0, n-1]内的数。先对[0, k]位置的数字进行反转,再对剩下的部分进行翻转,最后对整个数组进行翻转。
若先对整个数组进行翻转,再对[0, k-1]位置的数字进行反转,最后对剩下的部分进行翻转,就会时间超限!!!【原因未知】
新的一周继续加油!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。