TypechoJoeTheme

Toasobi的博客

搜索到 28 篇与 的结果 ———
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 评论
2023-03-07

二进制中1的个数(简单)

二进制中1的个数(简单)
本题我的解题思路是使用或运算,一个for循环对2求i次幂(0次幂二进制1在第1位,1次幂则在第2位)然后和待求数进行或运算。因为2的i次幂除了第i+1位为1,其他都为0,做或运算时如果待求数该位也为1则不会改变待求数,这即是本题思路。注意!因为int是有符号数据类型,数据范围是-2,147,483,648到2,147,483,647。所以2的31次方在编译器中是2147483647而不是2147483648。因此需要特殊处理。代码如下:<div> public class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { int count = 0; for(int i =0;i<32;i++){ int temp; temp = (int)Math.pow(2,i); if(i == 31) ...
2023-03-07

剑指offer(第二版)

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