TypechoJoeTheme

Toasobi的博客

最新文章

2023-03-14

树的子结构(中等)

树的子结构(中等)
这道题一看就是可以用递归判断是否是子结构,但是一开始我不打算使用递归,而是想从表示树的数组中看出一些规律出来(失败了)。所以还是得用递归:本题的递归思路是:拿A和B进行判断,判断根节点值是否相等?如果相等,再判断左右子节点值是否都相等(在判断的时候一旦A 等于null了说明B比A还要长一截,肯定不是子树。相反如果B等于null了,说明B短一截,肯定就是子树了)。如果相等返回true,不相等则出来继续匹配A和B的左右节点。代码如下:<div>class Solution { public boolean isSubStructure(TreeNode A, TreeNode B) { //0.题目约定空树不是子树 if(B==null){return false;} return search(A,B); } private boolean compare(TreeNode A, TreeNode B){ if(B == null){ //5.A不一定要为空,...
2023-03-14

剑指offer(第二版)

0 阅读
0 评论
2023年03月14日
0 阅读
0 评论
2023-03-14

合并两个排序的链表(简单)

合并两个排序的链表(简单)
还是一道链表题,我们可以发现二叉树和链表的题一般都很适合用递归进行实现那么这道题该怎么进行递归呢?我们知道,递归即是把一个大的任务分成多个相同逻辑的小任务执行。在此题中,我们可以把每次取两个链表中最小的节点当做新链表的靠前节点当做小任务,为了完成该任务,我们也需要每次递归返回一个节点。代码如下:<div>/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if (l1 == null) { return l2; } if (l2 == null) { return l1;...
2023-03-14

剑指offer(第二版)

0 阅读
0 评论
2023年03月14日
0 阅读
0 评论
2023-03-14

反转链表(简单)

反转链表(简单)
这道题主要考察递归做法。在本题递归思路中,采用模拟(纸上求解)的方式得出递归的实现代码如下:<div>class Solution { public ListNode reverseList(ListNode head) { if(head == null || head.next == null) { return head; } ListNode node = reverseList(head.next); head.next.next = head; //如果此处head是4,则表示在4,5之间加上5指向4的指针 head.next = null; //此处则表示删去4指向5的指针 return node; } }</div>
2023-03-14

剑指offer(第二版)

0 阅读
0 评论
2023年03月14日
0 阅读
0 评论
2023-03-14

链表中倒数第k个节点(简单)

链表中倒数第k个节点(简单)
这道题不难,主要是记录多一个思路:倒数第k个节点可以使用快慢指针来做。快慢指针,先让快指针走k步,然后两个指针同步走,当快指针走到头时,慢指针就是链表倒数第k个节点。代码如下:<div> public ListNode getKthFromEnd(ListNode head, int k) { ListNode frontNode = head, behindNode = head; while (frontNode != null && k > 0) { frontNode = frontNode.next; k--; } while (frontNode != null) { frontNode = frontNode.next; behindNode = behindNode.next; } return behindNode...
2023-03-14

剑指offer(第二版)

0 阅读
0 评论
2023年03月14日
0 阅读
0 评论
2023-03-07

数值的整数次方(中等)

数值的整数次方(中等)
这道题一开始我还想怎么是到中等题,这不一个for循环的事吗?结果提交超时。。。。看来这道题没那么简单。。(不止我一个人)====================方法:快速幂====================如果是在还没看懂,可以假设一个指数然后在纸上推导一下,就是这个道理代码如下:<div> class Solution { public double myPow(double x, int n) { if(n == 1) return x; if(n == 0) return 1.0; if(n == -1) return 1/x; return n > 0 ? quickMul(x,n):1/quickMul(x,n); } public double quickMul(double x,int n){ if(n == 0) return...
2023-03-07

剑指offer(第二版)

0 阅读
0 评论
2023年03月07日
0 阅读
0 评论