![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法题
蔚蓝不远
这个作者很懒,什么都没留下…
展开
-
链表内指定区间反转
题目描述将一个链表m位置到n位置之间的区间反转。其中:1 <= m <= n <= 链表长度示例1 -> 2 -> 3 -> 4 -> 5 - >null, m = 2, n = 4=> 1 -> 4 -> 3 -> 2 -> 5 -> null解决方法定位到待反转的链表区间头,并记录定位到待反转的链表区间尾,并记录反转区间链表前后连接时间复杂度:O(n)空间复杂度:O(1)impor原创 2021-01-25 17:30:44 · 542 阅读 · 0 评论 -
两个链表生成相加链表
题目描述假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0。示例输入:(6 -> 1 -> 7) + (2 -> 9 -> 5),即617 + 295输出:9 -> 1 -> 2,即912解决方法反转两个链表同时遍历两个链表,依次原创 2021-01-25 17:00:23 · 189 阅读 · 0 评论 -
单链表的排序
题目描述给定一个无序单链表,实现单链表的排序(按升序排序)。示例输入:head = [4,2,1,3]输出:[1,2,3,4]解决方法一:时间复杂度:O(nlogn)空间复杂度:O(logn)归并排序(递归)首先用快慢指针找到链表的中点对链表进行分割对链表进行合并(合并两个有序链表)import java.util.*;/* * public class ListNode { * int val; * ListNode next = null;原创 2021-01-24 18:50:02 · 2701 阅读 · 0 评论 -
判断链表是否有环
题目描述判断给定的链表中是否有环。如果有环则返回true,否则返回false。示例1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。示例3:输入:head = [1], pos = -1输出:false解释:链表中没有环。解决方法:双指针:快慢指针,快指针fast每次走原创 2021-01-24 16:16:42 · 114 阅读 · 0 评论 -
PTA L2-001 紧急救援 (25分)
这个题之所以记录是因为这是我写过考察图论知识最全面的一道算法题,题意不是很难读懂,考察到了图论中最短路径–Dijstkra算法,拓展到最短路径条数、最大权值、最短路径等。我认为拿它来复习图论中最短路径这个知识点还是比较适合的L2-001 紧急救援 (25分)题目描述作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援原创 2020-11-27 09:19:48 · 659 阅读 · 0 评论 -
简单易懂,高精度加法
简单描述:给两个很大很大的非负整数,求它的和我们用正常的加运算符,在数值肯定是超过了整型long long的数据范围,因此下面我们来用程序模拟加法#include <bits/stdc++.h> using namespace std;int main(){ string a, b; getline(cin, a); getline(cin, b); int res[10001]; int k = 0, len1 = a.length(), len2 = b.length();原创 2020-10-12 20:41:28 · 68 阅读 · 0 评论 -
n皇后问题
什么是n皇后问题?n皇后问题是指一个在n*n的国际象棋棋盘上放置n个皇后,使得这n个皇后两两均不在同一行、同一列、同一条对角线上,求合法的方案数。方法一:枚举所有情况枚举所有情况是非常暴力的,超过10以上输出就很慢了。#include <bits/stdc++.h> using namespace std;int main(){ int n; cin>>n; int s[10001]; for(int i = 0; i < n; i++){ s[i]原创 2020-10-12 11:35:16 · 2469 阅读 · 0 评论 -
一文吃透全排列
理解什么是全排列?我们一般把1~n这n个整数按某个顺序摆放的结果称为这n个整数的一个排列,而全排列指这n个整数能形成的所有排列例如对1、2、3这三个整数来说它的全排列是:1 2 31 3 22 1 32 3 13 1 23 2 1三个整数的全排列用手很快就能无差错的列举出来,那当是10个、100个时呢?下面我们用程序来实现全排列方法一:递归#include <bits/stdc++.h>using namespace std;int n;int res[100原创 2020-10-12 11:03:23 · 386 阅读 · 0 评论 -
质因子分解
题目描述给出一个正整数,安装从小到大的顺序输出其分解为质因数的乘法算式。format:N = p1k1*p2k2*···*pm^km,其中pi是质因数,ki是它的个数输入输入一个正整数n,可能是一个很大的数输出按如下样例格式输出样例输入180样例输出180 = 2^2*3^2*5/*质因子分解 180180 = 2^2*3^2*59753246897532468 = 2^2*11*17*101*1291*/#include<bits/stdc++.h>us原创 2020-10-11 20:29:32 · 217 阅读 · 0 评论 -
简单易懂,高精度乘法(C++实现)
利用数组模拟乘法演算来防止数据过大,无法执行。需要注意的点就是:数组容易越界的问题,特别是在进位时,很可能越界,此时你需要做判断下面是模拟乘法计算:#include <bits/stdc++.h>using namespace std;int main(){ string s1, s2; cin>>s1>>s2; int len1 = s1.length(); int len2 = s2.length(); int res[10001]; me原创 2020-10-10 21:03:46 · 2864 阅读 · 7 评论 -
总结前序、中序、后序两两重建二叉树
1. 已知前序和中序遍历能重建二叉树题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回二叉树的后序遍历Postorder = [15, 7, 9, 20, 3]限制:0 <= 节点个数 <= 5000递归本题直接利用的是二叉树先序遍历和中序遍历的特点,通过递归来求解出答案。1、通过原创 2020-07-05 09:28:03 · 257 阅读 · 0 评论 -
斐波那契数列
题目描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:1示例 2:输入:n = 5输出:5提示:0 &原创 2020-06-03 00:26:56 · 588 阅读 · 0 评论 -
笔试算法题(二)
题目描述李雷和韩梅梅坐前后排。上课想说话怕老师发现,所以改为传小纸条。为了被老师发现他们纸条上说的是啥,他们约定了如下方法传递信息:将26个英文字母(全为大写),外加空格,一共27个字符分成三组,每组9个。也就是ABCDEFGHI是第一组,JKLMNOPQR是第二组,STUVWXYZ是第三组(此处用代表空格)。然后根据传递纸条那天的日期,改变字母的位置先根据月份数m, 以整个分组为单位进行循环左移,移动(m-1)次。然后根据日期数d,对每个分组内的字符进行循环左移,移动(d-1)次。例如:以3月8原创 2020-06-02 16:53:59 · 371 阅读 · 1 评论 -
笔试算法题(一)
题目描述:小明的女朋友最喜欢在网上买买买了,可是钱包里钞票有限,不能想买啥酒买啥。面对琳琅满目的物品,她想买尽可能多的种类,每种只,买一件,同时总价格还不能超过预算上限。于是她请小明写程序帮她找出应该买哪些物品,并算出这些物品的总价值。输入规范每个输入包含两行。第一行是预算上限。第二行是用空格分隔的一组数字,代表每种物品的价格。所有数字都为正整数并且不会超过10000。输出规范对每个输入,输出应买物品的总价格输入实例1:10050 50输出实例1:100输入实例2:18850 42原创 2020-06-02 15:52:07 · 667 阅读 · 0 评论