1. 程式人生 > >【leetcode】筆記

【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;
	}