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

第三种:
直接一个一个赋值



将一个int型转为string:

String s= Integer.toString(7);

equals和==的对比:

==
用于比较基本数据类型时,如果两个值相同则结果为true
在比较引用时,如果引用指向同一内存地址则为true

equals()
实现对象的比较。
'=='不允许进行复写,所以可以通过复写equals()方法来达到比较对象内容是否相同的目的。

例如字符串类型对equals进行了复写后,就比较两个字符串对象的内容而不是他们的地址:

String s1=new String("abc");
String s2=new String("abc");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));

第一个输出false,因为两个对象的地址是不一样的
第二个输出true,因为两个字符串的内容是一样的

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[]这种数组
函数返回布尔数值


二分法的一般书写格式:

数组: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;
	}

ArrayList和LinkedList

  • ArrayList实现了动态数组的数据结构,LinkedList实现的是链表的数据结构
  • 使用get和set方法时使用ArrayList更好,因为LinkedList需要移动指针
  • 在列表内部需要频繁实现增删操作时用LinkedList更好,因为ArrayList需要移动复制数据
  • ArrayList的空间消耗主要在list列表结尾预留一定的空间,LinkedList的空间消耗主要在每个元素都需要一定的空间大小

ArrayList的初始化

除了general的初始化方法,还可以:

ArrayList<Stirng> obj = new ArrayList<String>(Arrays.asList(String str1, String str2));

或者:

 ArrayList<String> list = new ArrayList<String>(){{add("str01"); add("str02");}};  

格雷码关于i的表达式:
gray[i]=i^(i/2)

卡特兰数
F(1)=1 F(2)=2
F(n)=(2n)!/(n!(n+1)!) n>2

通过中序遍历和先序遍历构建二叉树:
https://blog.csdn.net/AXIMI/article/details/85276585



convertToTitle

https://blog.csdn.net/AXIMI/article/details/88934189

你可能感兴趣的:(leetcode)