Loading

摘要: 题目链接:二维数组中的查找 思路:二维矩阵数值分布特点是左上角高,右下角低。如果从最高处或最低处开始搜索,那么搜寻路径会很多。而从矩阵右上角开始搜索的话,可以发现,右上角的左边都是递减,下边是递增,那么,从左上角出发,比target大时,就走左边;比target小时就走下边,直到找到target或者 阅读全文
posted @ 2020-12-29 23:21 yoyuLiu 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 题目链接:从上到下打印二叉树 思路:队列 代码: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(i 阅读全文
posted @ 2020-12-29 11:38 yoyuLiu 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 题目链接:把数字翻译成字符串 思路:从数字高位向低位进行遍历,假设遍历到第i个位置,那么开始判读可不可以和前面的数字进行组合:当不和前面的数字组合时,该位数字自己表示一个字符;当和前面数字组合时,先判断能不能组合,如01、31、26、40,这些只有一种翻译方式,也就是说只有和前面组合时位于[10,2 阅读全文
posted @ 2020-12-29 11:11 yoyuLiu 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 题目连接:86.分隔链表 思路:遍历一遍链表,将表中结点分为两类,一类是小于给定的x,另一类是大于等于x。输出结果时要考虑四种情况:输入的表头为空;没有小于x的节点;没有大于等于x的节点;既有小于x又有大于等于x的。 代码: /** * Definition for singly-linked li 阅读全文
posted @ 2020-12-28 21:25 yoyuLiu 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 题目连接:39.组合总和 思路:暴力遍历。先对数组排序,在进行枚举。 代码: class Solution { private List<List<Integer>> res = new ArrayList<>(); public List<List<Integer>> combinationSum 阅读全文
posted @ 2020-12-28 14:09 yoyuLiu 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 题目:下一个排列 思路:找规律。在字典序中,用在字典中出现的次序代表该字符的值,用直接连接字符,那么最小排列的字符串就是单调递增的一条直线。从最小排列开始逐渐增大排列,那么可以发现从直线的末端开始,会不断的出现顶点并向前延伸,直到直线变成了单调递减。可以发现每一次增大的排列都是末端顶点向前移动。为了 阅读全文
posted @ 2020-12-28 13:30 yoyuLiu 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 题目链接:复杂链表复制 思路:哈希表。先遍历一遍用hash表存储新旧链表对应的结点,然后再遍历一遍通过哈希表确定新链表中random所指向的结点。 代码: /* // Definition for a Node. class Node { int val; Node next; Node rando 阅读全文
posted @ 2020-12-28 00:12 yoyuLiu 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 题目链接:剪绳子 思路: 暴力(会超时)。假设输入为n,那么当某个位置的左边长度为i,右边长度为n-i时,可以枚举出四种情况: 左边进行分段,右边进行分段。那么变成递归的行为,对左右段递归调用本方法。 左边不进行分段,右边进行分段。同理,对右边递归调用。左边长度为本身。 左边进行分段,右边不进行分段 阅读全文
posted @ 2020-12-27 22:54 yoyuLiu 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 题目链接:字符串的排序 思路:全排列字符顺序,要去重。先排序,因为想把重复的字符放在一起,这样遍历的时候方便处理重复的字符串;然后递归地遍历每个位置,组合所有情况。 代码: class Solution { private List<String> list = new ArrayList<>(); 阅读全文
posted @ 2020-12-27 15:51 yoyuLiu 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 题目:29.两树相除 思路:搜索答案,使用二分。题目限定不能使用乘除取模,那么只能使用加减。最基础的想法就是不断的累加除数,直到累加的除数超过被除数时,前一个累加的除数就是结果。这种搜寻的过程可以使用二分方法。最开始的想法是设置一个数n,然后每累加除数(记作b),有n+=n; b+=b; 。然后当超 阅读全文
posted @ 2020-12-27 13:04 yoyuLiu 阅读(65) 评论(0) 推荐(0) 编辑