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

猜你喜欢

转载自blog.csdn.net/AXIMI/article/details/83387158