java练习1(主语法和思路)

首先是两个贪心算法:

视频拼接

两个数中较大数:Math.max(//num1,//num2)
int [] num = new int[//index];
取二维数组的每一行:

for(int[] clip: clips){
    if(clip[0] < T){
      maxn[clip[0]] = Math.max(clip[1], maxn[clip[0]]);
           }
        }

题目有一个坑点似乎是因为视频可以录制所需时间外的区间,所以必须要clip[0] 小于所需要录制的T才可。
基本思路是,一个数组clips储存从0-T-1开始的片段最远的末尾,然后开始计算最小片段数:第一个(即0为开始)最远末端内,i++,每一个秒作为开头来根据clips更新最远的last,一个pre储存0秒的最远末端,当更新的i==pre时证明第一个片段已经到了尽头,必须要进入下一个片段才能剪辑到需要的秒数,也就是答案++;但在这之前,如果更新的last(即最远片段)==i,证明最远片段已经到目前需要的秒数,中间必然有空缺的片段不能被剪辑进入(因为clip[i]的最远片段不可能是i,等于没有,所以只能是缺了),所以不能完成剪辑

跳跃游戏

上一题的简单版。
甚至不需要数组记录每一个位置能去的最远位置(因为题目已经给了),直接last更新,i==pre就是不可能就可以了
枚举大法:

数组中的最长山脉

int length = num.length;
枚举山顶。
假设每一个点都是一个山脉,两个数组left、right记录左右山脉的长度。
对于left:left[0] 必然是0,因为左边没有数。从0开始,如果i位> i-1位,则证明当该位作为山顶时左边长度是前面一位作为山顶的长度+1,否则证明该位左边不符合条件,左边长度位直接为0;右边同理,i>i+1则为i+1位加1,否则为0
最后结果就是max(左+右+1)即可

独一无二的出现次数

思路很简单,主要是hashmap、hashtable、hashset的应用。
不知道为什么力扣的提交平台不能用hashmap……
map映射
set集合

求根到叶子节点的长度

复习了深度优先dfs算法:
大概就是每到一个字节点,前面的和*10,然后递归累加,直到最后的叶子结点(没得左右子节点的)

class Solution {
    public int sumNumbers(TreeNode root) {
        return dfs(root,0);
    }
    int dfs(TreeNode root, int sum){
        if(root == null) return 0;
        sum = sum*10 + root.val;
        if(root.left == null && root.right == null) return sum;
        else return dfs(root.left, sum) + dfs(root.right, sum);
    }
}

岛屿的周长

这个也是暴力算法,除了这一步:
int m = grid[0].length, n = grid.length;
m记录的是grid[0],也就是一行有多少数;n记录的是grid,也就是有多少行,即列数

java的封装类型:Boolean,Byte,Short,Integer,Long,Character,Double,Float
s.substring(BI,EI)其中截取的字符串不包括EI上的字符

单词拆分

在这里插入图片描述
arraylist:get,add,remove以及遍历元素
奇怪的一点:字符串s.length()要加括号,但是数组的.length不需要加括号
boolean类型的初始化:均为false,除非参数初始化为true

HashSet<String> hs = new HashSet<String>(wordDict);

直接list转set了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值