算法题记录
文章平均质量分 82
算法题解题思路记录
孤城浪人
正在前端路上摸爬滚打的菜鸟
展开
-
leetcode:189. 轮转数、34. 在排序数组中查找元素的第一个和最后一个位置、724. 寻找数组的中心下标(JavaScript)
文章目录189. 轮转数组思路34. 在排序数组中查找元素的第一个和最后一个位置思路724. 寻找数组的中心下标思路189. 轮转数组给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]示例 2:输入原创 2022-05-28 21:50:19 · 141 阅读 · 0 评论 -
leetcode:前 K 个高频元素、删除字符串中的所有相邻重复项、有多少小于当前数字的数字、有效的山脉数组、独一无二的出现次数(JavaScript)
文章目录347. 前 K 个高频元素思路1047. 删除字符串中的所有相邻重复项思路1365. 有多少小于当前数字的数字思路优化继续优化完整代码941. 有效的山脉数组思路1207. 独一无二的出现次数思路347. 前 K 个高频元素给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出原创 2022-05-27 20:03:30 · 145 阅读 · 0 评论 -
leetcode:62. 不同路径、63. 不同路径 II、343. 整数拆分、96. 不同的二叉搜索树(JavaScript)
文章目录62. 不同路径思路63. 不同路径 II思路343. 整数拆分dp思路非dp思路96. 不同的二叉搜索树思路62. 不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条原创 2022-05-22 20:06:04 · 405 阅读 · 0 评论 -
leetcode:509. 斐波那契数、70. 爬楼梯、746.使用最小花费爬楼梯(JavaScript)
文章目录509. 斐波那契数思路70. 爬楼梯思路746.使用最小花费爬楼梯思路509. 斐波那契数斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给定 n ,请计算 F(n) 。示例 1:输入:n = 2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1示原创 2022-05-22 14:56:59 · 104 阅读 · 0 评论 -
leetcode:55. 跳跃游戏、45. 跳跃游戏 II、53. 最大子数组和、1005. K 次取反后最大化的数组和
文章目录55. 跳跃游戏思路45. 跳跃游戏 II思路53. 最大子数组和思路55. 跳跃游戏给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎原创 2022-05-08 22:04:43 · 797 阅读 · 0 评论 -
leetcode:376. 摆动序列、135. 分发糖果、134. 加油站
文章目录376. 摆动序列思路难点模拟过程 [4,1,2,3]135. 分发糖果思路为什么第二次遍历是取更大的元素而不是当前元素加一呢?确定遍历顺序134. 加油站思路376. 摆动序列如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 **摆动序列 。**第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。相反,[原创 2022-05-08 21:59:49 · 301 阅读 · 0 评论 -
leetcode:763. 划分字母区间、452. 用最少数量的箭引爆气球、738. 单调递增的数字(JavaScript)
文章目录763. 划分字母区间思路两步452. 用最少数量的箭引爆气球思路两步738. 单调递增的数字思路要点遍历顺序为什么要有标记位?763. 划分字母区间字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。示例:输入:S = "ababcbacadefegdehijhklij"输出:[9,7,8]解释:划分结果为 "ababcbaca", "defegde", "hijhklij"。每个字母最多出现在一原创 2022-05-06 21:19:03 · 531 阅读 · 0 评论 -
leetcode: 406. 根据身高重建队列、56. 合并区间、435. 无重叠区间(JavaScript)
文章目录406. 根据身高重建队列思路56. 合并区间思路如何判断集合是否重叠435. 无重叠区间思路两步:为什么不更改左边界呢?406. 根据身高重建队列假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j]原创 2022-05-06 21:12:59 · 418 阅读 · 0 评论 -
leetcode:968. 监控二叉树(JavaScript)
文章目录968. 监控二叉树思路结点状态子节点的四种情况空节点返回值968. 监控二叉树难度困难402收藏分享切换为英文接收动态反馈给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。示例 1:输入:[0,0,null,0,0]输出:1解释:如图所示,一台摄像头足以监控所有节点。示例 2:输入:[0,0,null,0,null,0,null,null,0]输出:2解释:需要至少两个摄像原创 2022-05-06 17:17:13 · 85 阅读 · 0 评论 -
leetcode:51. N 皇后、37. 解数独(JavaScript)
文章目录51. N 皇后思路:本题分两步解:37. 解数独思路要点:判断当前位置放当前元素是否合法总结51. N 皇后n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例 1:输入:n = 4输出:[[".Q..","...Q","Q...","..Q."],["..Q.",原创 2022-05-01 12:16:34 · 242 阅读 · 0 评论 -
leetcode:491. 递增子序列、17. 电话号码的字母组合、31. 分割回文串、93. 复原 IP 地址(JavaScript)
文章目录491. 递增子序列分析去重如何保证递增呢?17. 电话号码的字母组合思路:单层递归逻辑递归终止条件完整代码另一种写法31. 分割回文串思路:分析题目本题可分为两步93. 复原 IP 地址思路:分析题目可以得出要解此题需要做两步工作491. 递增子序列给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。示例 1:输入:nums = [原创 2022-05-01 11:59:26 · 243 阅读 · 0 评论 -
leetcode:组合与组合总和(JavaScript)
文章目录77. 组合思路:优化剪枝39. 组合总和思路剪枝优化40. 组合总和 II思路实现完整代码216. 组合总和 III递归终止条件剪枝优化77. 组合给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。示例 1:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]示例 2:输入:n = 1, k = 1输出:[[1]]提原创 2022-05-01 11:17:51 · 261 阅读 · 0 评论 -
leetcode:46. 全排列、47. 全排列 II(JavaScript)
文章目录46. 全排列思路:要点:没有递归终止条件要点:避免重复取同一个值完整代码47. 全排列 II思路:要点:如何避免重复取同一元素和去重完整代码46. 全排列给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3原创 2022-05-01 10:52:23 · 127 阅读 · 0 评论 -
leetcode:78. 子集、90. 子集 II(JavaScript)
文章目录78. 子集第一种解法思路第二种解法思路问题:为什么递归终止条件条件是 start >= nums.length n呢?90. 子集 II解析本题与子集1有什么区别呢?去除重复子集去重条件的选择完整代码78. 子集给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,原创 2022-05-01 10:49:08 · 239 阅读 · 0 评论 -
leetcode:257. 二叉树的所有路径、104. 二叉树的最大深度、111. 二叉树的最小深度(JavaScript)
文章目录257. 二叉树的所有路径思路:要点:什么时候找到叶子结点?为什么不判断当前节点是否为空?完整代码104. 二叉树的最大深度迭代思路:采用层序遍历,每遍历一层深度就加一,这样一定回取到最大深度。递归思路:111. 二叉树的最小深度迭代思路:递归思路:257. 二叉树的所有路径给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。示例 1:输入:root = [1,2,3,null,5]输出:["1->2->5"原创 2022-04-28 21:05:51 · 131 阅读 · 0 评论 -
leetcode:20. 有效的括号、150. 逆波兰表达式求值、1047. 删除字符串中的所有相邻重复项(JavaScript)
文章目录20. 有效的括号思路:150. 逆波兰表达式求值思路:注意:1047. 删除字符串中的所有相邻重复项思路:20. 有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例 2:输入:s = "()[]{}"输出:true示例 3:输入:s = "(]"输出:false示例 4:原创 2022-04-28 21:05:34 · 118 阅读 · 0 评论 -
leetcode:701. 二叉搜索树中的插入操作、530. 二叉搜索树的最小绝对差、700. 二叉搜索树中的搜索(JavaScript)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代.原创 2022-04-28 21:04:26 · 63 阅读 · 0 评论 -
leetcode:617. 合并二叉树(JavaScript)
617. 合并二叉树难度简单945收藏分享切换为英文接收动态反馈给你两棵二叉树: root1 和 root2 。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。注意: 合并过程必须从两个树的根节点开始。示例 1:输入:root1 = [1,3,2,5], root2原创 2022-04-28 21:03:35 · 142 阅读 · 0 评论 -
leetcode:112. 路径总和(JavaScript)
112. 路径总和给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true解释:等于目标和的根节点到叶节点路径如上图所示。示例原创 2022-04-27 11:53:44 · 185 阅读 · 0 评论 -
leetcode:110. 平衡二叉树、538. 把二叉搜索树转换为累加树(JavaScript)
文章目录110. 平衡二叉树思路:538. 把二叉搜索树转换为累加树思路:难点:如何实现累加呢?110. 平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例 3:输入:root =原创 2022-04-27 11:53:03 · 115 阅读 · 0 评论 -
leetcode:222. 完全二叉树的节点个数、669. 修剪二叉搜索树、513. 找树左下角的值(JavaScript)
文章目录222. 完全二叉树的节点个数迭代:层序遍历,统计每层节点数量,累加。递归669. 修剪二叉搜索树思路:513. 找树左下角的值思路:最左边的节点最底层的结点222. 完全二叉树的节点个数给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例 1:输入:root = [1,2,原创 2022-04-27 11:51:23 · 132 阅读 · 0 评论 -
leetcode:501. 二叉搜索树中的众数、404. 左叶子之和、98. 验证二叉搜索树(JavaScript)
文章目录501. 二叉搜索树中的众数思路:404. 左叶子之和思路:98. 验证二叉搜索树思路:501. 二叉搜索树中的众数给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。如果树中有不止一个众数,可以按 任意顺序 返回。假定 BST 满足如下定义:结点左子树中所含节点的值 小于等于 当前节点的值结点右子树中所含节点的值 大于等于 当前节点的值左子树和右子树都是二叉搜索树示例 1:输入:root = [1,nul原创 2022-04-27 11:50:40 · 111 阅读 · 0 评论 -
leetcode:236. 二叉树的最近公共祖先、235. 二叉搜索树的最近公共祖先(JavaScript)
236. 二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点 1 的最近公共祖先是节点 3 。示例 2:输入:root = [3,原创 2022-04-26 09:34:08 · 2109 阅读 · 0 评论 -
leetcode:快乐数、两数之和、三数之和、四数相加 II、四数之和(JavaScript)
@[]快乐数编写一个算法来判断一个数 n 是不是快乐数。「快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1,那么这个数就是快乐数。如果 n 是 快乐数 就返回 true ;不是,则返回 false 。示例 1:输入:n = 19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 =原创 2022-04-24 19:23:53 · 1076 阅读 · 0 评论 -
leetcode:106. 从中序与后序遍历序列构造二叉树、654. 最大二叉树、106. 从中序与后序遍历序列构造二叉树(JavaScript)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录思路:要点:循环不变量要点:子树后序遍历序列的起点、终点如何确定循环不变量是后序序列左闭右开代码循环不变量是后序序列左闭右闭代码106. 从中序与后序遍历序列构造二叉树给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。示例 1:输入:inorder = [9,3,15,20,7], postor.原创 2022-04-22 11:15:46 · 1011 阅读 · 0 评论 -
leetcode:两两交换链表中的节点、删除链表的倒数第n个节点、移除链表元素(JavaScript)
文章目录两两交换链表中的节点思路:问题:为什么循环条件是`pre != null && cur != null?`删除链表的倒数第n个节点思路:常规解法快慢指针问题:为什么要设置虚拟节点?移除链表元素思路:问题一:为什么要设置虚拟头结点?问题二:为什么要删除节点后要`continue`结束本次循环?两两交换链表中的节点给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例 1:输入:head = [原创 2022-04-21 11:07:39 · 954 阅读 · 0 评论 -
leetcode:反转链表、环形链表、链表相交(JavaScript)
文章目录前言反转链表思路:迭代递归环形链表思路:链表相交思路:前言本篇博客主要是在leetcode上做算法题的一些思路,前段时间一直没时间整理,今天整理了在这里记录一下。反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 50原创 2022-04-21 11:02:32 · 613 阅读 · 1 评论 -
leetcode:101. 对称二叉树(JavaScript)
101. 对称二叉树给你一个二叉树的根节点 root , 检查它是否轴对称。示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:输入:root = [1,2,2,null,3,null,3]输出:false提示:树中节点数目在范围 [1, 1000] 内-100 <= Node.val <= 100递归思路:有五种情况需要考虑左节点为空,右节点不为空,不对称左节点不为空,右节点为空,不对称左节点、右节点都为空,对称左节原创 2022-04-19 13:07:04 · 159 阅读 · 0 评论 -
leetcode:239.滑动窗口最大值(JavaScript)
239. 滑动窗口最大值难度困难1552收藏分享切换为英文接收动态反馈给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值--------------- ---原创 2022-04-17 21:45:33 · 650 阅读 · 0 评论 -
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。(C语言)
1.一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。示例 1:输入:num= [1,2,2,3]输出:[1,3] 或 [3,1]2.代码展示#include <stdio.h>#include <stdlib.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */i原创 2020-08-16 18:33:45 · 727 阅读 · 1 评论 -
蓝桥杯:FJ沙盘字符串问题(C语言)
问题描述 FJ在沙盘上写了这样一些字符串: A1 = “A” A2 = “ABA” A3 = “ABACABA” A4 = “ABACABADABACABA” … … 你能找出其中的规律并写所有的数列AN吗? 输入格式 仅有一个数:N ≤ 26。输出格式 请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。样例输入3样例输出ABACABA2. 思路:观察得当N等于1时A1=“A”,当N不等于1时AN="A(N-1)(..原创 2020-08-22 16:53:32 · 1345 阅读 · 0 评论 -
欧几里得算法求最大公约数之惊掉下巴的代码简化(纯C语言)
欧几里得算法求最大公约数也叫辗转相除法。证明有两个数a,b,且a = kb + r(a,b,k,r皆为正整数,且r<b)假设d为a,b的一个公约数而r = a - kb,两边同时除以d,r/d=a/d-kb/d=m,m为整数因此d也是r的公约数所以a,b,r最大公约数也必然相等因此可以不断地将三个数中较小两个相除取余得到最大公约数例求402,256最大公约数402/256=1······146256/146=1······110146/110=1······36110/36原创 2020-08-17 18:56:26 · 2114 阅读 · 0 评论 -
蓝桥杯:报时问题(c语言)
问题描述 给定当前的时间,请用英文的读法将它读出来。 时间用时h和分m表示,在英文的读法中,读一个时间的方法是: 如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“three o’clock”。 如果m不为0,则将时读出来,然后将分读出来,如5:30读作“five thirty”。 时和分的读法使用的是英文数字的读法,其中0~20读作: 0:zero, 1: one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven,原创 2020-09-05 14:51:13 · 234 阅读 · 0 评论 -
求1000以内的素数(c语言)
基础练习,求1000以内的素数。#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]) { int a[1001],i,j; for(i=0;i<1001;i++)//给数组a赋值 { a[i]=i; } for(i=2;i<1001;i++)//因为0、1不是,从2开始遍历 { for(j=2;j<=sqrt(i);j++) { if(a[i原创 2020-08-25 17:06:45 · 2679 阅读 · 0 评论 -
PTA:L1-025 正整数A+B (c++)
L1-025 正整数A+B (15 分)题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。输入格式:输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。输出格式:如果输入的确是两个正整数,则按格式A + B = 和输出。如果某个输入原创 2021-03-02 14:34:20 · 383 阅读 · 0 评论 -
PTA:L2-012 关于堆的判断 (c++简单易懂25 分)
将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种:x is the root:x是根结点;x and y are siblings:x和y是兄弟结点;x is the parent of y:x是y的父结点;x is a child of y:x是y的一个子结点。输入格式:每组测试第1行包含2个正整数N(≤ 1000)和M(≤ 20),分别是插入元素的个数、以及需要判断的命题数。下一行给出区间[−10000,10000]内的N个要被插入一个初原创 2021-02-07 21:49:51 · 1569 阅读 · 5 评论 -
PTA:6翻了(简单易懂c++)
“666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”,因为这是 3 个 “9”!本题就请你编写程序,将那些过时的、只会用一连串“6666……6”表达仰慕的句子,翻译成最新的高级表达。输入格式:输入在一行中给出一句话,即一个非空字符串,由不超过 1000 个英文字母、数字和空格组成,以回车结束。输出格式:从左到右扫描输入的句子:如果句子中有超过原创 2021-02-01 19:51:23 · 850 阅读 · 0 评论 -
PTA:抢红包(简单思路c++)
L2-009 抢红包 (25分)没有人没抢过红包吧…… 这里给出N个人之间互相发红包、抢红包的记录,请你统计一下他们抢红包的收获。输入格式:输入第一行给出一个正整数N(≤10000),即参与发红包和抢红包的总人数,则这些人从1到N编号。随后N行,第i行给出编号为i的人发红包的记录,格式如下:K N1 P1 ⋯ Ni Pi其中K(0≤K≤20)是发出去的红包个数,Ni是抢到红包的人的编号,Pi(>0)是其抢到的红包金额(以分为单位)。注意:对于同一个人发出的红包,每人最多原创 2021-01-29 21:17:20 · 962 阅读 · 1 评论 -
PTA:链表去重(思路详解超简单)c++
L2-002 链表去重 (25分)给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤100000 ,为结点总数)。一个结点的地址是非负的 5 位整数,空地址 NULL 用 -1 来原创 2021-01-29 20:57:54 · 8174 阅读 · 8 评论 -
利用栈进行进制转换(c++)
用c++利用栈存储结构将十进制转换为八进制和十六进制#include <iostream>using namespace std;/* run this program using the console pauser or add your own getch, system("pause") or input loop */#define stacksize 100class stack { private: char data[stacksize]; int原创 2020-10-03 11:25:20 · 4587 阅读 · 1 评论