Java leetcode 语言基础

本文参考书目:《labuladong的算法小抄》

数组

# 初始化方法
int m = 5, n=10;
int[] nums = new int[n]
boolean[][] visited = new boolean[m][n]

# 当数组以函数参数的形式传入时一般需要做非空检查

if(nums.length == 0){
return;
}
for(int i = 0; i <nums.length;i++){
// 访问nums[i] 
}

字符串 String

# 处理复杂,不能直接修改 
# 不支持用[]直接访问其中的字符 
# 转化成char[]类型后才能修改
String s1  = “hello world”;
char c = s1.charAt(2);//获取s1[2]的字符
// charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。

char [] chars = s1.toCharArray();
chars[1] = ‘a’;
String s2 = new String(chars);
System.out.println(s2);

字符串类型相等的比较

//一定要使用equals 方法判断字符串是否相同
if(s1.equals(s2)){
//相同}
else{
// 不相同
}
否则会出现一些不宜察觉的Bug:

字符串拼接  stringbulider类与

//可以使用+号进行拼接 不可以使用==比较 否则容易出现不宜察觉的bug
String s3 = s1 + “!”;
System.out.println(s3);

虽然支持用+进行拼接 但是效率不高 不建议在for 循环中使用 
如果需要进行频繁的字符串拼接,推荐使用srtingbuilder类
线程不安全  性能优异  可变性
StringBuilder sb = new StringBuilder();

for(char c = ‘a’;c <=’f’;c++)
{	sb.append(c);
}

Sb.append(‘g’).append(‘hij’).append(123);

String res = sb.toString();
System.out.println(res);

动态数组 ArrayList

List类型的子类

相当于对java内置的数组类型进行了包装  底层也是数组实现的

初始化一个存储String类型数据的动态数组
ArrayList<String> nums = new ArrayList<>();

初始化一个存储int 类型数据的动态数组
ArrayList<Interger> strings = new ArrayList<>();

判断数组是否为空
Boolean isEmpty()

返回数组中元素的个数
int size()

返回索引index的元素
E get (int index)

数组尾部添加e
Boolean add(E e)

双链表 LinkedList

List类型的子类

与ArrayList不同的是,我们更多地使用了LinkedList 对于头部和尾部元素的操作 因为底层数据结构为链表.所以直接操作头尾部的元素效率较高

LinkedList<Integer> nums = new LinkedLIst<>();

Boolean isEmpty()

Int size()

Boolean contains(Object o)    时间复杂度为O(N)

在链表尾部添加元素e
Boolean add(E e)

Void addFirst(E e)

E removeFirst()

E removeLast()

其中只有contains方法的时间复杂度是O(N),因为必须遍历整个链表

哈希表 HashMap

初始化方法
HashMap<Integer,String> map = new HashMap<>();
HashMap<String,int[]> map = new HashMap<>();

K 代表键的类型 V代表值的类型
判断是否存在键key
Map.containsKey(Object key)

Map.get ( Object key)
获得键对应的值,若key 不存在,则返回null

Map.put (K key,V value)
将key 和vaule 键值对存入哈希表

V remove (Object key)
如果key存在 删除key 并返回对应的值

V getOrDefault(Object key ,V defaultValue)
获得key的值 如果不存在 则返回defaultvalue

Set<K> keySet()
获得哈希表中的所有key

V putIfAbsent(K key ,V value)
如果key 不存在 则存入  如果key 存在 则什么都不做

哈希集合 HashSet

Set <String> set = new HashSet<>();

Boolean add(E e)

Boolean contains(Object o)

Boolean remove(Object o)

队列 Queue

Queue是一个接口(Interface),因此它的初始化方法有些特别

有多个实现类 包括linkedlist,ArrayDeque,Priority Queue

新建一个存储string的队列
Queue<String> q  = new LinkedList<>();

Boolean isEmpty()

Int size()

E peek()

E poll()

Boolean offer(E e)

堆栈 Stack

Stack<Integer> s = new Strack<>();

Boolean isEmpty();

Int size()

将元素压入栈顶
E push (E item)

返回栈顶元素
E peek ()

删除并返回栈顶元素
E pop()

返回值

return new int[]{hashtable.get(target-nums[i]),i};
return new int[0];

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值