[Leetcode][第题][JAVA][两个数组的交集 II1][双指针][HashMap]
生活随笔
收集整理的這篇文章主要介紹了
[Leetcode][第题][JAVA][两个数组的交集 II1][双指针][HashMap]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【問題描述】[中等]
【解答思路】
1. 哈希映射
復雜度分析
2. 雙指針
復雜度分析
3. 輔助數組(不推薦)
時間復雜度:O(N^2) 空間復雜度:O(N)
public int[] intersect(int[] nums1, int[] nums2) {int len1 = nums1.length;int len2 = nums2.length;List<Integer> ans = new ArrayList<>();if(len1<=len2){ans = cross(len1,len2,nums1,nums2);}else{//len1>len2ans = cross(len2,len1,nums2,nums1);}int[] res = new int[ans.size()];for(int i = 0; i < res.length; i++) res[i] = ans.get(i);return res;}public List<Integer> cross(int shao,int duo,int[] nums1,int[] nums2 ){List<Integer> ans = new ArrayList<>();boolean[] a = new boolean[duo]; for(int num:nums1){for(int i = 0;i<duo;i++){if(num == nums2[i] && !a[i]){ans.add(num);a[i]=true;break;}}}return ans;}【總結】
1.函數返回一個長度不確定的數組 (int[ ])
方法一:List轉Int數組 (逐個復制)
List<Integer> list = new ArrayList<Integer>(); //LinkedList<Integer> list = new LinkedList<Integer>();list.add(1);list.add(2);int count = list.size();int[] aux = new int[count];for(int i = 0; i < count; i++){aux[i] = list.poll();}return aux;方法二:使用函數Arrays.copyOfRange
int length1 = nums1.length, length2 = nums2.length; int[] intersection = new int[Math.min(length1, length2)]; return Arrays.copyOfRange(intersection, 0, index);2.交集問題 雙指針 HashMap
3.String[] 與 List < String > 互轉
String[] strings1 = {"a", "b", "c"};// String[] 轉 List<String>List<String> list3 = Arrays.asList(strings1);// List<String> 轉 String[]String[] strings2 = list3.toArray(new String[0]);參考鏈接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/solution/liang-ge-shu-zu-de-jiao-ji-ii-by-leetcode-solution/
參考鏈接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/solution/liang-chong-jie-fa-javashi-xian-by-lyl0724-2/
總結
以上是生活随笔為你收集整理的[Leetcode][第题][JAVA][两个数组的交集 II1][双指针][HashMap]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql2012一段时间无法连接报53错误
- 下一篇: matlab自定义颜色代码,自定义颜色为