假入门(?)

1.String和char[]是不同的东西
使用如下转换:

char[] ts = time.toCharArray();

time = String.valueOf(ts);

String中提取字符:

char c1 = text1.charAt(i - 1);

2.java中的for循环(关于string)
不是array也不是可迭代对象,所以不能用for(char a:s)这种形式循环,而要用数字遍历然后一个一个的charAt。其中,length方法是有括号
数组的length似乎不需要加括号
Arrays.sort()的用法:
sort(a)按照数字升序排序
sort(a,2,5)在指定范围内按照数字升序排序
比较器:
//@override 重写 当成注释用
在这里插入图片描述
java中PriorityQueue:是一个小根堆,每次都取出队列中权值最小的
队列接口 删除做法:poll()返回队列第一个元素/remove()返回boolean,如果是空队列会触发异常
优先级队列的新建方法:
小根堆Queue<Integer> Pq = new PriorityQueue<>((x, y)->x - y);
大根堆Queue<Integer> Pq = new PriorityQueue<>((x, y)->y - x);
二分查找:mid<target 小了 left = mid + 1//mid>target 大了 right = mid - 1
拒绝采样:例子为rand7实现rand10全过程:
在这里插入图片描述
68:贪心算法
列表list中可以new ArrayList来新建字符串数组,用add往里添加对象
StringBuffer:线程安全的可变字符串(区别一下String/StringBuilder非线程安全)使用append添加字符串
1894注意一下,虽然所有数据都没有超过int的范围,但是求和会超过
O10-I 就,取余是所有超过的数都要取余……我也不知道为什么会这样
600java里面的int和boolean分的非常开,不能像c艹一样while循环直接写一个int类型,它有点判断不了
猜到这道题不能用暴力遍历,题解给出了01字典树的dp……想到了之前写过的并行
满二叉树和完全二叉树的区别,用一些大白话解释:
满二叉树就是满的二叉树,完全二叉树是不满的、但是有的部分和满二叉树一样的二叉树
动态规划部分:dp[i] = dp[i - 1] + dp[i - 2]适用于所有满二叉树,dp[i]代表高度为i - 1 的树的答案。因此动态规划出所有满二叉树0-31的值。对于剩下的完全二叉树,左子树部分根节点是0,可以直接加上dp[i-1](因为dp[i]的根节点就是0),对于右子树,则需要分类讨论,右子树的左子树是满二叉树,右子树右子树无论为不为空都加上dp[i - 2],因为右子树的右子树必然是两个1相连或没有。左子树若不是满二叉树,则继续推下去。code部分,官方采取的是从可能的最大位开始(1<<30 1<<29好像就可以了),一位一位减小,一位一位按位与,第一个与的值不为零的位i说明我们找到了右子树的根节点,又因为i代表的子树的高度,因此加上dp[i+1]即可(代表左子树),紧接着找下一位1,如果是两个连着的1位flag为true,直接跳出循环,因为说明右子树的右子树存在;否则flag被重置为false,接着加该位的左子树然后接着循环。如果直到最后也没跳出循环,那么最后这个数(即n)也是满足条件,但它一定是一个右子树或者一个非满二叉树左子树的左叶子结点,在之前没有加上,因此最后结果还需要加1。
447.复习(预习)关于Map接口:
常用的有HashMap和LinkedHashMap,存入是根据健值覆盖的
Map<,> XXX = new HashMap<,>();
放入元素用put
常用的方法getOrDefault
循环Map:for(Map.Entry<,> entry: XXX.entrySet())
getKey/getValue之类的想必不用复述了
447采用的办法是将距离存在哈希表里,同距离的排列组合就行了,因为要考虑顺序,所以不是m*(m-1)/2而是m*(m-1)
278无语了 要减少对函数调用,true可能是,false一定不是,所以缩小到左右区间相等返回。而且它最后的数据太大会溢出,所以要left + (right - left) / 2;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值