首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    leetcode-56. 合并区间

    合并区间就是将有重叠区间的两个区间合成一个。首选定义一个存放 int 类型数组的集合作为临时结果集,对传进来的二维数组进行判空,若传进来的 intervals 为空,则直接返回,由于结果集是临时的结果集,记得将一维数组的集合 toArray 成题目最终返回要求的二维数组。利用函数式编程,实现 Comparator 接口,对起点进行从小到大排序,跟 foreach 类似。   定义一个循环维护的变量,当 i 的值小于 intervals 中的集合个数时,进入循环,确保能遍历到最后一个区间,每次遍历都取出区间的左右端点,若当前区间的右端点比下一个区间的左端点还大,则说明区间有重叠,将当前右端点的值与下一个区间右端点的值进行比较,取较大的值作为新区间右端点,将新区间放入结果集中并接着判断下一个区间,最后返回最终结果集,将 List<int[]> 类型转换成 0 行 n 列的格式的数组类型返回即可。

    02

    leetcode-102. 二叉树的层序遍历

    这道题首先定义一个存放结果集的集合,再对传进来的树节点进行判空。定义一个存放二叉树节点的队列,这个队列就像吃饭用的盆,去阿姨那里打饭盛饭用的待会饭还是进自己的肚子里的,至于为什么是盆不是碗就不扯太远了。先把二叉树的根节点放进去队列,因为刚开始这一层级就一个根节点。ok,然后只要队列不为空,就进入循环。接下来义一个存放同一层级的所有元素集合,并获取此时队列的长度,为什么要获取队列长度呢,重点来了,因为你还记得当初你把同一层级的所有元素加入了队列,至于是多少个这里要算清楚,因为女朋友还不是你的老婆所以还是要 AA 的,开玩笑,是因为题目要求的是同一层级的所有元素。

    03

    leetcode-43. 字符串相乘

    这道题的思路是让一个字符串每个字符与另一个字符串的每一个字符相乘,该进位就进位,该补 0 就补 0,每一次相乘后将结果相加,加到最终就是相乘的结果。   若两个字符串任一为 0,则相乘结果就是 0,直接返回 0 即可。定义一个储存结果集的变量,按照题目要求是字符串,分别求出两个字符串的长度,对 num2 从右边开始遍历,因为右边是低位,定义一个可拼接的 StringBuffer 类型的变量,定义一个储存进位值的变量,i 向左移动是向高位移动,移动几位就要补几个零,读取每一个字符与 ‘0’ 作差得到整形的结果,这是因为 ASCII 码值的字符 ‘0’~‘9’ 是紧挨着的。 同样的,对 num1 从低位进行遍历,先获取字符对应的整形值,两整形相乘加上上一个进位,将结果对 10 求余,得出个位的值,十位的当进位处理,并将结果除以 10 取整,相当于只获取了十位的值,最后的进位是当新的一位处理,直接拼接即可,以上各种拼接后,数值大的在右边,而现实的数,数值大的在右边,所以需要进行一次反转,调用字符串相加的算法得出结果后加入结果集,最后返回最终结果集即可。   字符串相加的算法:思路是将其每个字符转换成整型相加得出结果再转换成字符串。首先获取传进来的两个字符串的长度,且定义一个保存进位的 add 变量,定义结果集,只要以上三个变量不为任一一个不为 0 都能进入循环,只要 num1 或者 num2 的长度不为 0 则进行取值。这里的 num1.charAt(i) - '0' 主要是利用字符 ‘0’ 到 ‘9’ 的 ASCII 码值是连续的,让其作差即可得到字符的本身的整型值。   取完值,两字符串相加再加上上一步的进位,对结果求余作为本次运算的结果,再对结果除以 10 获得进位的值,同步维护两个指针,最后要记得将答案反转一下,因为拼接字符串是从左到右拼接的,但是我们的数是从又到左数值越大的,返回最终答案,记得 toString 变成 String 类型。

    04

    leetcode-47. 全排列 II

    定义全局存储最终结果集和临时结果集的变量。定义一个存储布尔值的数组并全部赋值为 false,把传进来的数组排序,排序完传入回溯,得到最终答案后返回最终结果集即可。   回溯算法传入的参数有已排序的数组和全是 false 的布尔数组。数组长度和临时结果集的长度进行比较,当临时结果集存储的个数跟传进来的数组的长度相等时说明排序完毕,若排序完毕则加入结果集,记得将临时结果集加入数组中。   若没排序完,则对传入的待排序数组进行判断,若 nums[i] == nums[i - 1] 即当前层选择的数与上一层所选择的一样,且 used[i - 1] == false 即说明同⼀树层 nums[i - 1] 使⽤过则直接跳过,进入下一循环。如果同⼀树⽀ nums[i] 没使⽤过则开始处理,标记同⼀树⽀ nums[i] 使⽤过,防止同一树支重复使用,进入回溯,说明同⼀树层 nums[i] 使⽤过,防止下一树层重复使用,记得回溯后将当前选择移除,且设置为 false 让同层的选择不受影响。

    04
    领券