上一页 1 2 3 4 5 6 ··· 9 下一页
摘要: 基于s的范围暴力破解的话必然超时 这里采用滑动窗口的方案来处理 我们维护一个队列,依次将字符压入队列,当新遇到的字符 已经在队列中时,我们就需要将队列中已出现的位置前的字符全部弹出 来保证队列中永远不存在重复字符,同时每次队列更新后计算队列长度即可。 时间O(n),空间O(z)(与字符串s的离散度相 阅读全文
posted @ 2021-05-26 18:54 jchen104 阅读(40) 评论(0) 推荐(0) 编辑
摘要: BFS 我们遍历每个节点,每次遇到1得节点,类似扫雷中,将这个节点周围 得所有为1得节点全部置为0(这个步骤我们利用队列实现,不停将该节点周围 得节点压入队列直到维护条件不成立),每次将一个区域得1置为0,最后我们可以 计算出总共有几个搜索块,就是答案了 时间O(m*n)(需要遍历每个节点)空间O( 阅读全文
posted @ 2021-05-26 10:36 jchen104 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 三步走方案 第一步:原链表基础上每个节点后新建一个完全一致的辅助节点,例如1->2->3, 调整后为1->1^->2->2^->3->3^ 第二步:将辅助节点的random节点赋值为原节点random的next,比较绕口,这里举个例子 比如原节点1的random节点为3,此时1^的random也是3 阅读全文
posted @ 2021-05-25 21:54 jchen104 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 方法一、DP 假设dp[i][j]表示从i到j下标是否是回文串 于是有dp[i][j]=dp[i+1][j-1]^(s[i]==s[j]) 时间O(n^2),空间O(n^2) 1 public String longestPalindrome(String s) { 2 int len = s.le 阅读全文
posted @ 2021-05-24 14:32 jchen104 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 比较简单的递推 1 class Solution { 2 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 3 ListNode l3 = new ListNode(),l4=l3; 4 int tag=0; 5 while(l1!= 阅读全文
posted @ 2021-05-24 14:16 jchen104 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 方法一、循环取模相加 方法二、对9取模 由于a*100+b*10+c*1=99*a+9*b+a+b+c 所以有(abc)%9=(a+b+c)%9 我们拿题目实例验证 38%9=30%9+8%9=11 11%9=2 于是有 1 class Solution { 2 public int addDigi 阅读全文
posted @ 2021-05-20 11:41 jchen104 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 方法一、对于循环除以2,直到结果为奇数,判断结果是否为1 时间O(logn),(这里题目已经给出了n得范围必然是int,那么logn其实必然小于31) 1 class Solution { 2 public boolean isPowerOfTwo(int n) { 3 if(n==0) retur 阅读全文
posted @ 2021-05-20 10:59 jchen104 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 这题的难点在于怎么判断查询到的2个节点没有同一个父节点,因此我们每次遍历的 时候,就记录下当前节点的左右子节点,然后对下一层做判断,这样每一层遍历的时候 就能得出下一层的结果 时间O(n),空间O(n) 1 public boolean isCousins(TreeNode root, int x, 阅读全文
posted @ 2021-05-14 11:08 jchen104 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 方案一、使用BFS遍历每个元素,遍历时不停检测是否存在2个元素和相加满足要求 时间O(n),空间O(n) 1 public boolean findTarget(TreeNode root, int k) { 2 if(root==null) return false; 3 Set<Integer> 阅读全文
posted @ 2021-05-12 10:14 jchen104 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 这里我们采用计算后续n-1位的和,最后直接取反赋值给第0位元素 1 public int[] sumZero(int n) { 2 int[] ans = new int[n]; 3 int sum = 0; 4 for(int i = 1; i < n; i++) { 5 ans[i] = i; 阅读全文
posted @ 2021-05-10 11:53 jchen104 阅读(34) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 9 下一页