【leetcode】筆記
JAVA初始化二維陣列的方式:
第一種:
int a[][]={{1,2,3},{4,5,6}};
第二種,先指明行數,再對每行的長度申請記憶體賦值:
int[][] arr3 = new int[5][];//五行 for(int i=0; i<arr3.length; ++i){ arr3[i]=new int[i+1]; //列的長度每次都變化。每次都要重新申請空間(長度) for(int j=0; j<arr3[i].length; ++j) arr3[i][j]= i+j; }
第三種:
直接一個一個賦值
map的使用:
標頭檔案: import java.util.*;
建立一個map:
Map<String,Integer> map=new HashMap<>();
map新增\修改鍵值對:
map.put("key", 0);
判斷物件是否在map的鍵\值中:
if(map.containsKey(key));
if(map.containsValue(key));
獲得對應鍵的值:
map.get(key);
獲得所有鍵的集合:
Set<String> set=map.KeySet();
遍歷map的4種方式:
http://www.cnblogs.com/fqfanqi/p/6187085.html
怎麼向二維List中新增List:
List<List> d2=new ArrayList<List>(); //這是一位二維陣列
for(int i=0;i<m;i++)
List d1=new List(); //這是一個新新增的一維陣列
d2.add(d1);
1>就是每次新增的總是new的List();
2>一個一維陣列被新增之後不能被刪掉,就是不能:
for(int i=0;i<m;i++)
List d1=new List();
d2.add(d1);
d1.clear();
不然之前新增在d2中的那個d1也會被clear掉
重置ArrayList中某一個元素的值:
List list=new ArrayList();
list.set(0,3); //將list中的第0位置為3
將一個int型轉為string:
String s= Integer.toString(7);
equals和==的對比:
int m=3;
int n=3;
System.out.println(m==n);
String str1="123";
String str2="123";
System.out.println(str1==str2);
String str3=new String("123");
String str4=new String("123");
System.out.println(str3==str4);
依次輸出true true false
第一個:m和n的內容都是int型數值3,所以true
第二個:str1和str2的內容都是字串”123”,所以是true
第三個:str3和str4是指向兩個不同字串物件的地址,所以false
首先equals不能用於基本資料型別變數,只能用於比較物件
其次equals比較的是兩個變數的地址是否一樣
但是,
String str1=new String("123");
String str2=new String("123");
System.out.println(str1.equals(str2));
輸出的結果是:true
因為String類對equals進行了重寫,所以在string中比較是兩個字串的內容
怎麼計算以2為底的對數:
藉助換底公式:
double res=Math.log(n)/Math.log(2);
怎麼將一個Array陣列中的值傳遞給另外一個數組:
List<List<Integer>> list1;
List<List<Integer>> list2;
list1.addAll(list2);
判斷兩個陣列是否相等:
Arrays.equals(array1, array2)
這裡的array1、array2可以是ArrayList物件,也可以是int [] char[]這種陣列
函式返回布林數值
二維陣列傳參的問題:
只用傳入指標int[][] a即可,不用傳入行數和列數
行數可以用a.length來表示,列數可以用a[0].length來表示
二分法的一般書寫格式:
陣列:a 指標:p1, p2
int p1=0,p2=a.length;
while(p1<=p2){
int mid=(p1+p2)/2;
if(a[mid]==target) return;
if(a[mid]<target) p1=mid+1;
else p2=mid-1;
}