刷Leetcode等算法題時一些很實用的輔助方法錦集--java版

一、數組

    1、使用Arrays.sort(int[] a)進行排序

        底層採用的是快速排序算法實現的:時間複雜度爲O(nlogn),空間複雜度O(logn),不穩定。默認是從小到大排序。

1 int[] arr = new int[]{2, 9, 6, 8, 4, 3};
2 Arrays.sort(arr);
3 System.out.println(Arrays.toString(arr));

打印結果:

[2, 3, 4, 6, 8, 9]

參數可以是其它基本數據類型,也可以是自定義類型,可以通過使用Comparator比較器來自定義排序順序。

例如,降序排列:

1 Integer[] arr = new Integer[]{2, 9, 6, 8, 4, 3};
2 Arrays.sort(arr, new Comparator<Integer>() {
3     @Override
4     public int compare(Integer t0, Integer t1) {
5         return t1 - t0;
6     }
7 });
8 System.out.println(Arrays.toString(arr));

打印結果:

[9, 8, 6, 4, 3, 2]

 

2、使用Arrays.toString(int[] arr)將數組組合成字符串

     內部是通過StringBuilder + for 循環來實現的,該方法可以方便調試查看數組的值,而無需自己手動來組裝字符串。

1 int[] arr = new int[]{2, 9, 6, 8, 4, 3};
2 System.out.println(Arrays.toString(arr));

打印結果:

[2, 9, 6, 8, 4, 3]

同樣,該方法的參數數組類型可以是其它數據類型。

 

二、ArrayList

     1、使用構造函數或者addAll將一個集合中的內容添加到新的ArrayList中

1 //構造函數
2 public ArrayList(Collection<? extends E> c) 
3 //addAll方法
4 public boolean addAll(Collection<? extends E> c) 

內部實現原理:ArrayList內部維護了一個數組,無論是使用構造函數還是addAll方法,都是將給定集合中的元素複製到該數組中。

1 List<Integer> list = new ArrayList<>();
2 list.add(1);
3 list.add(2);
4 list.add(3);
5 List<Integer> newList1 = new ArrayList<>(list);
6 System.out.println(newList1);
7 List<Integer> newList2 = new ArrayList<Integer>();
8 newList2.addAll(list);
9 System.out.println(newList2);

打印結果:

[1, 2, 3]
[1, 2, 3]

  2、ArrayList與數組互相轉化

    (1)使用list.toArray()將ArrayList轉爲數組

1 List<Integer> list = new ArrayList<>();
2 list.add(1);
3 list.add(2);
4 list.add(3);
5 Object[] a = list.toArray();
6 System.out.println(Arrays.toString(a));

打印結果:

[1, 2, 3]

    (2)使用Arrays.asList(數組) 將數組轉爲ArrayList

1 Integer[] arr = new Integer[]{2, 9, 6, 8, 4, 3};
2 List<Integer> arrList = Arrays.asList(arr);
3 System.out.println("size=" + arrList.size() + ";arrList=" + arrList);

打印結果:

size=6;arrList=[2, 9, 6, 8, 4, 3]

 

3、使用Collections.reverse(list) 倒轉ArrayList中的元素

1 List<Integer> list = new ArrayList<>();
2 list.add(1);
3 list.add(2);
4 list.add(3);
5 Collections.reverse(list);
6 System.out.println(list);

打印結果:

[3, 2, 1]

 

、字符串

    1、按照多個空格,對字符串進行分割:split(“\\s+”)或者split(" +")

    例如:

1  String s = "leetcode    is     very     good!";
2  String[] arr = s.split("\\s+"); //或者s.split(" +");
3  System.out.println(Arrays.toString(arr));

打印結果:

[leetcode, is, very, good!]

 2、去掉字符串首尾空字符串:trim()

1 String s = "  ab cd   ";
2 Sytem.out.println(s.trim());

打印結果:

ab cd

3、拼接字符串:join()

1 String[] strArray = {"ab","cd","ef"};
2 System.out.println(String.join(" ",strArray));

打印結果:

ab cd ef

這裏將數組組合成字符串,用“ ”連接。join的第一個參數可以替換其它的連接符號,第二個參數除了使用數組外,還可以使用LIst,Deque等集合對象

 

 

s

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章