AcWing解答
文章平均质量分 61
劭兮劭兮
小白一个,写代码时总是会遇到bug,欢迎能和小伙伴们一起讨论,也欢迎大佬指教!
展开
-
AcWing3642:链表合并
问题原题链接:链表合并解决办法利用数组辅助完成本题,和前不久做的一道题极其相似,思路大致一样,但是本题代码比较啰嗦的原因是,需要自己实现获取输入内容功能(多半是String类型和int类型的转换),所以,代码量较多,注释的代码是测试的代码。思路参照博客:AcWing34:合并两个排序的链表JAVA代码实现import java.util.Scanner;class Main { public static void main(String[] args) { // TODO A原创 2021-07-02 15:02:59 · 74 阅读 · 0 评论 -
AcWing34:合并两个排序的链表
问题原题链接:合并两个排序的链表解决办法(二路归并) O(n)新建虚拟头结点dummy,设置current指针指向dummy,current 指针负责记录当前已经确定位置的元素;若当前 current1 指针指向的结点的值val比 current2 指针指向的结点的值val小,则令 current 的next指针指向 current1,且 current1 后移;注意:current 的位置也需要后移;因为目前又有一位结点的位置已经确定;否则指向 current2 ,且 curr.原创 2021-07-02 11:03:48 · 92 阅读 · 2 评论 -
AcWing33:反转链表
我们生在红旗下,长在春风里,目光所至皆为华夏,五星红旗皆为信仰。人民有信仰,民族有希望,国家有力量。问题原题链接:反转链表解决办法迭代版本翻转即将所有节点的next指针指向前驱节点如图所示:注意:单链表在改变current.next指向时,需要先将current.next保存起来,否则会出现改变指向后,找不到原来的元素的情况。递归版本递归,首先我们需要考虑递归函数要做什么问题;reverseList(node) 函数需要将链表翻转;怎样翻转呢?当单链表为空或者只有一个.原创 2021-07-01 21:31:38 · 112 阅读 · 1 评论 -
AcWing86:链表中环的入口结点
问题原题链接:链表中环的入口结点解决办法链表快慢指针扫描本题用first(慢指针),second(快指针)分别从起点走,first每次走一步,second每次走两步;如果在此过程中,second走到空结点的地方,则不存在环,可返回null;当first走了 x 到b点时,second已经在环上走了 x ,此时顺时针距离b点还有y;那么为什么距离b点还有y呢?如果第一次相遇的时候,如下情况:(a 是起点,b 是环的入口,c 是两个指针的第一次相遇点,ab 之间的距离是 x,bc原创 2021-07-01 16:20:05 · 156 阅读 · 1 评论 -
AcWing32:链表中倒数第k个节点
问题原题链接:链表中倒数第k个节点解决方法首先 遍历 整个单链表,得到单链表的长度;比较 k 和 length 的大小,如果k > length , 返回null单链表的倒数第k个结点,也就是单链表的正数第 length-k+1 个结点再次遍历单链表,得到正数第 length-k+1 个结点返回正数第 length-k+1 个结点JAVA代码实现/** * Definition for singly-linked list. * public class ListNode原创 2021-07-01 11:56:35 · 67 阅读 · 0 评论 -
删除链表中的结点类型题JAVA解答
文章目录AcWing28:在O(1)时间删除链表结点解题方法JAVA代码实现注意:剑指offer18:删除链表的节点解题方法:JAVA代码实现AcWing27:删除链表中重复的节点解决方法JAVA代码实现AcWing28:在O(1)时间删除链表结点单链表中删除某个结点的时候,只能通过前驱节点的next指针改变指向来删除该结点; 输入:单链表 = [1, 4, 6, 8],node = 6 删除结点:删除第二个结点,即删除值为 6 的结点 输出:[1, 4, 8]解题方法我们如果让该结点的原创 2021-07-01 10:51:53 · 183 阅读 · 0 评论 -
AcWing85:在O(1)时间删除链表结点
原题链接在O(1)时间删除链表结点解题思路单链表中,无法寻找node结点的前驱节点,所以直接用node的后继节点代替node结点既可;node.val = node.next.val;node = node.next;JAVA实现/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) .原创 2021-06-27 22:00:14 · 72 阅读 · 1 评论 -
AcWing24:剪绳子
问题原题链接:剪绳子JAVA实现class Solution { public int maxProductAfterCutting(int length) { // dp[i]表示长度为i时,所具备的最大乘积 int[] dp = new int[length+1]; for(int i = 2;i<=length;i++) {// 假设第一刀剪在j的位置上 for(int j =1;j<=i-1;j++) { dp[i原创 2021-06-22 17:52:39 · 64 阅读 · 0 评论 -
AcWing22:机器人的运动范围
问题原题链接:机器人的运动范围JAVA实现class Solution { class Node { int x; int y; public Node(int x,int y) { this.x=x; this.y=y; } } // public static void main(String[] args) {// int result = movingCoun.原创 2021-06-22 17:47:38 · 64 阅读 · 0 评论 -
AcWing19:斐波那契数列
原题链接斐波那契数列解题思路斐波那契数列斐波那契数列指的是这样一个数列:如果设an为该数列的第n项(n ∈\in∈ N*),那么这句话可以写成如下形式:an = an−1_{n-1}n−1 + an−2_{n-2}n−2在此,运用递归的思想,来实现nFibonacci(n)001120+1 = Fibonacci(0)+Fibonacci(1)31+2 = Fibonacci(1)+Fibonacci(2)Fabonacci(n).原创 2021-06-22 16:58:36 · 112 阅读 · 0 评论 -
AcWing36:用两个栈实现队列
问题原题链接:用两个栈实现队列解题思路本小白在此选用的是JAVA语言:根据本题,我们需要先来了解JAVA中的堆栈,JAVA语言中有专门的 Stack类表示栈:栈是Vector的一个子类,它实现了一个标准的后进先出的栈。堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。拓展:Vector类Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的:Vector 是同步访问的。Vector 包含了原创 2021-06-22 11:19:50 · 92 阅读 · 0 评论 -
AcWing18:从尾到头打印链表
问题原题链接从头到尾打印链表解题思路JAVA实现/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public static int[] printListReversingly(ListNode head)原创 2021-06-21 17:24:28 · 97 阅读 · 0 评论 -
AcWing17:替换空格
问题原题链接原题链接:替换空格原创 2021-06-21 17:03:51 · 93 阅读 · 0 评论 -
AcWing15:不修改数组找出重复的数字
问题原题链接原题链接:找出数组中重复的数字个人思路自己思路:双层for循环,把整个数组遍历一遍,每一个元素都与其后面的元素比较,如果有相等的元素,结束循环;java实现class Solution { // public int duplicateInArray(int[] nums) { // } public static void main(String[] args) { int[] nums = {2,3,5,4,3,2,.原创 2021-06-21 14:00:34 · 190 阅读 · 0 评论 -
AcWing14:找出数组中重复的数字
问题原题链接:找出数组中重复的数字自己思路:双层for循环,把整个数组遍历一遍,每一个元素都与其后面的元素比较,如果有相等的元素,结束循环;class Solution { public static void main(String[] args) { int[] nums = {2,3,5,4,3,2,6,7}; duplicateInArray(nums); } public static int duplicateInArray(int[] nums) { .原创 2021-06-21 13:04:10 · 225 阅读 · 0 评论 -
AcWing01:A+B
最近开始初步学习一点点算法,小白实在太菜了,所以把做过的题目都做了记录,哈哈哈!问题原题链接:A+B本题比较简单,只把代码记录下来既可!java实现:public class Main { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); int b = scanner.nextInt(); System.ou.原创 2021-06-19 11:33:50 · 121 阅读 · 0 评论 -
AcWing25:二进制数中1的个数
最近,尝试做一些很简单很简单的算法题,有点头秃(本小白比较菜,让大家见笑了,哈哈哈),但是看到老婆的照片,瞬间好开心!原题二进制中1的个数解决办法一作为JAVA专业的学生,第一次,我借助了JAVA中已经实现好的方法来解决本问题,偷个懒:在类Integer中,已经定义好了可以求二进制数中1的个数的方法,那就偷个懒用一下:public class Ninth { public static void main(String[] args) { int result = NumberOf原创 2021-06-19 11:17:05 · 151 阅读 · 0 评论