
数据结构
文章平均质量分 59
数据结构
来老铁干了这碗代码
算法爱好者 终生学习践行者 雨雪刀霜阻不住 不成大神誓不休
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
硬核!Java集合面经大全——双非上岸阿里巴巴系列
东北某不知名双非本,四面成功上岸阿里巴巴,在这里把自己整理的面经分享出来,欢迎大家阅读。序号文章名超链接1操作系统面经大全——双非上岸阿里巴巴系列2021最新版面经——>传送门12计算机网络面经大全——双非上岸阿里巴巴系列2021最新版面经——>传送门23Java并发编程面经大全——双非上岸阿里巴巴系列2021最新版面经——>传送门34Java虚拟机(JVM)面经大全——双非上岸阿里巴巴系列2021最新版面经——>传送门4原创 2021-07-18 20:23:51 · 3260 阅读 · 14 评论 -
【三次优化】剑指 Offer 35. 复杂链表的复制
立志用最少代码做最高效的表达请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:输入:head = [[1,1],[2,1]]输出:[[1,1],[2,1]]原创 2021-06-18 22:54:42 · 404 阅读 · 0 评论 -
剑指 Offer 34. 二叉树中和为某一值的路径【附完整可运行代码】
立志用最少的代码做最高效的表达输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 target = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[[5,4,11,2],[5,8,4,5]]提示原创 2021-06-18 12:56:17 · 417 阅读 · 2 评论 -
【超100%解法】剑指 Offer 33. 二叉搜索树的后序遍历序列
立志用最少的代码做最高效的表达输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。示例 1:输入: [1,6,3,2,5]输出: false示例 2:输入: [1,3,2,6,5]输出: true提示:数组长度 <= 1000第一部分:操作:1、遍历序列,直到某值大于根节点值,以此位置为界限分出左子树和右子树。2、遍历右子树的值,如果有值小于根节点值,说明该树不是BST原创 2021-06-18 11:28:06 · 320 阅读 · 2 评论 -
【解析】案例4-1.7 文件传输 (25 分)
立志用最少的代码做最高效的表达当两台计算机双向连通的时候,文件是可以在两台机器间传输的。给定一套计算机网络,请你判断任意两台指定的计算机之间能否传输文件?输入格式:首先在第一行给出网络中计算机的总数 N (2≤N≤10^4),于是我们假设这些计算机从 1 到 N 编号。随后每行输入按以下格式给出:I c1 c2其中I表示在计算机c1和c2之间加入连线,使它们连通;或者是C c1 c2其中C表示查询计算机c1和c2之间能否传输文件;又或者是S这里S表示输入终止。输出格式:原创 2021-03-16 23:31:31 · 806 阅读 · 0 评论 -
暴力优化解法+哈希解法——2016年第七届蓝桥杯省赛b组第八题 四平方和
Problem describe 四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。 比如:5 = 0^2 + 0^2 + 1^2 + 2^27 = 1^2 + 1^2 + 1^2 + 2^2(^符号表示乘方的意思)对于一个给定的正整数,可能存在多种平方和的表示法。要求你对4个数排序:0 <= a <= b <= c <= d并对所有的可能表示法按 a,b,c,d 为联合主键升.原创 2020-09-17 15:32:13 · 869 阅读 · 0 评论 -
【解析】1013 Battle Over Cities (25 分)_31行代码AC
立志用最少的代码做最高效的表达PAT甲级最优题解——>传送门It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We must know immediately if we need to repair any ot原创 2021-02-10 00:02:30 · 1631 阅读 · 0 评论 -
【双100%解法】剑指 Offer 22. 链表中倒数第k个节点
立志用最少的代码做最高效的表达输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.提交截图:/** * Definition for singly-linked list原创 2021-06-15 13:21:28 · 329 阅读 · 1 评论 -
【无取巧解法,易于理解!】剑指 Offer 26. 树的子结构
看题解时,很多大牛用很少的代码就完成了AC,但可能看了很多遍也看不懂,因此萌生了写一种最“笨”最完整的代码的想法,这样大家可以通过我的代码入门,看懂了再去挑战大牛们的简洁解法。输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,4,5,1,2], B = [4,1]输出:true限制:0 &原创 2021-06-16 11:25:51 · 358 阅读 · 0 评论 -
【完整可运行代码】剑指 Offer 29. 顺时针打印矩阵
立志用最少的代码做最高效的表达输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 1000 <= matrix[原创 2021-06-16 18:04:24 · 336 阅读 · 8 评论 -
【双100%解法】LeetCode 141 【剑指Offer 23】链表中环的入口节点
立志用最少的代码做最高效的表达给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4], pos = 1输出:原创 2021-06-15 17:54:24 · 347 阅读 · 1 评论 -
剑指 Offer 07. 重建二叉树【千字分析,三种方法】
立志用最少的代码做最高效的表达输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3/ \9 20/ \15 7限制:0 <= 节点个数 <= 5000文章目录1. 储备知识2. 分析3. 解法:递归实现4. 一次优化:HashMap.原创 2021-05-31 12:50:07 · 456 阅读 · 3 评论 -
【四重优化,速看】剑指 Offer 13. 机器人的运动范围
立志用最少的代码做最高效的表达题目地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1原创 2021-06-13 21:22:39 · 295 阅读 · 1 评论 -
【0ms优化】剑指 Offer 18. 删除链表的节点
立志用最少的代码做最高效的表达给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1 的第原创 2021-06-15 11:07:57 · 319 阅读 · 0 评论 -
剑指 Offer 27. 二叉树的镜像【无取巧解法,易于理解!】
看题解时,很多大牛用很少的代码就完成了AC,但可能看了很多遍也看不懂,因此萌生了写一种最“笨”最完整的代码的想法,这样大家可以通过我的代码入门,看懂了再去挑战大牛们的简洁解法。请完成一个函数,输入一个二叉树,该函数输出它的镜像。示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]限制:0 <= 节点个数 <= 1000/** * Definition for a binary tree node. * public cla原创 2021-06-16 11:54:17 · 309 阅读 · 6 评论 -
【leetcode-83】剑指 Offer 18-2 删除排序链表中的重复元素
立志用最少的代码做最高效的表达存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。示例 1:输入:head = [1,1,2]输出:[1,2]示例 2:输入:head = [1,1,2,3,3]输出:[1,2,3]提示:链表中节点数目在范围 [0, 300] 内-100 <= Node.val <= 100题目数据保证链表已经按升序排列一、常规双指针解法class S原创 2021-06-15 11:34:58 · 507 阅读 · 2 评论 -
【最佳解法】剑指 Offer 25. 合并两个排序的链表
立志用最少的代码做最高效的表达输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000注意:1、建立伪头结点,方便操作2、要明确:链表的建立,是修改地址和指针,而不是开辟空间赋值。class Solution { public ListNode mergeTwoL原创 2021-06-16 00:35:00 · 398 阅读 · 6 评论 -
剑指 Offer 28. 对称的二叉树【无取巧,易于理解!】
看题解时,很多大牛用很少的代码就完成了AC,但可能看了很多遍也看不懂,因此萌生了写一种最“笨”最完整的代码的想法,这样大家可以通过我的代码入门,看懂了再去挑战大牛们的简洁解法。请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:输入:root = [1,2,2,null,3,null,3]输出:false限制:0 <= 节点个数 <= 1000原创 2021-06-16 12:47:44 · 373 阅读 · 8 评论 -
【三种解法】剑指 Offer 06. 从尾到头打印链表【附完整可运行代码】
立志用最少的代码做最高效的表达输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000文章目录解法1:栈解法2解法3完整可运行代码测试用例本题考点解法1:栈利用栈先进后出的原理,将链表遍历并存入栈,新建数组,将栈依次弹出,得到的就是倒序的数组。本来遍历一遍就出结果的题,我也不知为啥脑子抽了要用栈。。class Solution6 {原创 2021-05-30 11:04:38 · 458 阅读 · 4 评论 -
【简洁写法】剑指 Offer 30. 包含min函数的栈
立志用最少的代码做最高效的表达定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top();原创 2021-06-16 20:32:37 · 335 阅读 · 6 评论 -
【双100%解法】剑指 Offer 24. 反转链表
立志用最少的代码做最高效的表达定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000理解链表最好的方法,就是在草稿纸上画下来手推!***代码展示/** * Definition for singly-linked list. * public c原创 2021-06-15 19:12:32 · 320 阅读 · 1 评论 -
【速看,双100%】剑指 Offer 14- I. 剪绳子 I
立志用最少的代码做最高效的表达给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例 2:输入: 10输出: 36解释: 10 = 3 +原创 2021-06-13 23:46:02 · 292 阅读 · 1 评论 -
算法竞赛入门经典(第二版) | 例题5-3 安迪的第一个字典 (紫书牛啤!)(UVa10815,Andy's First Dictionary)
概述: 输入一个文本,找出所有不同的单词,按字典序排序,去重后,输出,单词不分大小写。 储备知识: 1、sstring头文件的用法→sstring头文件函数详解2、cctype头文件的用法→cctype头文件函数详解题目(提交)链接→UVa-10815没使用过该网站的同学请猛戳这里→vJudge教程分析一、我的思路是: 读到大写字母就转化成小写的,读到小写就存入字...原创 2020-02-24 18:59:45 · 755 阅读 · 0 评论 -
比紫书优化,14行代码AC——例题 5-7 丑数(Ugly Numbers,UVa 136)——解题报告
题意:丑数是一些因子只有2,3,5的数。数列1,2,3,4,5,6,8,9,10,12,15……写出了从小到大的前11个丑数,1属于丑数。现在请你编写程序,找出第1500个丑数是什么。没有输入输出:The 1500’th ugly number is <…>.(<…>为你找到的第1500个丑数) 注意:<…>是你找到的数,输出中没有尖括号; 2、输出完应...原创 2020-03-08 16:52:05 · 934 阅读 · 0 评论 -
25行代码AC——习题5-7 打印队列(Printer Queue,UVa 12100)——解题报告
励志用尽量少的代码做高效的表达。题目(提交)链接→UVa-12100题目描述:我们需要用打印机打印任务。每个任务都有1~9间的优先级,优先级越高,任务越急。打印机的运作方式:从打印队列里取出一个任务j,如果队列里有比j更急的任务,则直接把j放到打印队列尾部,否则打印任务j。每次打印都消耗一分钟的时间,但调整任务位置不消耗时间。输入:第一行:n个测试用例第二行:m1(任务个数) ...原创 2020-03-11 15:27:55 · 1954 阅读 · 0 评论 -
15行代码AC——习题5-5 复合词(Compound Words, UVa 10391)——解题报告
励志用少的代码做高效的表达题目(提交)链接→UVA-10391本题实质是#include<string>头文件的substr()字符串分割函数与#include<algorithm>头文件的find()函数联用。基本思路:单词(字符串)存入容器后,逐位分解(substr()),查找(find())按每一位分解后其前后分别组成的字符串是否在容器中出现。 若皆出现...原创 2020-03-10 17:02:14 · 818 阅读 · 0 评论 -
21行代码AC——例题5-2 Ducci序列(Ducci Sequence,UVa1594)——解题报告
励志用少的代码做高效的表达。题目(提交)链接→UVa-1594本题为水题,因此侧重点从解题转变为优化。注意点:1、下一轮是按照上一轮的每个数做运算,但下一轮每次运算都会改变数列的值,造成运算不准确,我的做法是:事先拷贝一个数列b,用数列b的值做运算,而后赋值给a。2、我判断0序列的方法是:用#include<algorithm>中的count()函数,如果0的数量等于数组...原创 2020-03-10 09:15:27 · 2235 阅读 · 2 评论 -
21行代码AC——习题5-1 代码对齐(Alignment of Code, UVa1593)——解题报告
题意:输入若干行代码,要求各列单词的左边界对齐且尽量靠左,单词之间至少要空一格,每个单词不超过80个字符,每行不超过180个字符,一共最多1000行。思路:1、输入内容存入二维数组2、找出每列最长的单词做域宽。3、按域宽输出单词。注意点:这道题本质就是在考get型函数处理输入+按域宽和左对齐输出。1、读取输入内容有两种方法:getline()逐行读取后用stringstream分割...原创 2020-03-09 21:43:05 · 1924 阅读 · 0 评论 -
22行代码AC——习题5-6 对称轴(Symmetry,UVa1595)——解题报告
励志用尽量少的代码做高效的表达。题目(提交)链接→UVa-1595思路:此题本质是一道笛卡尔坐标系上的对称性问题。判定性问题:由于只要能判别图像是否左右对称即可,无需确认关于哪条垂直线对称,那么问题可以这样解决:将坐标升序排序后,若两侧坐标和都等于sum,再判断二者y值相同。就说明关于某条线对称。最开始想到用pair结构体,p.first存储x坐标,p.second存储y坐标。重写c...原创 2020-03-10 23:40:42 · 947 阅读 · 0 评论 -
17行代码AC——习题5-3 卡片游戏(Throwing cards away I, UVa 10935,约瑟夫环)_解题报告
励志用少的代码做高效的表达题目(提交)链接→UVa-10935 本题为水题,因此侧重点由解题转向优化。思路:最开始想到用string存储,利用插入,删除快速计算。但却发现如果输入>=10的数,给string赋值就非常麻烦。如:输入时我们要把11转化成"11",而输出是要把"11"再转化成11。于是换了一个思路:用vector存储,同样可以实现插入、删除等 。后知后觉:此题...原创 2020-03-10 11:12:06 · 982 阅读 · 0 评论 -
解题报告——例题5-8 Unix is 命令(UVa 400)——26行代码解决
题目大意:读入n个字符串,按字典序排序,再按列优先输出,附加条件每行最多输出60个字符,在此条件下要求行最少。(最开始没仔细看题,以为在一行中,每个单词相隔最长单词的长度+2,最后一列单词空间长度为最长单词的长度,不够用空格补齐。o(╥﹏╥)o。)注意点:1、求行数和列数时,容易想到的方法是O(n)复杂度的遍历求法,但可以优化为复杂度为O(1)的求法。2、如果对本题求解过程有清晰的阶段划分...原创 2020-03-08 19:56:16 · 835 阅读 · 0 评论 -
算法竞赛入门经典(第二版) | 例题5-1 大理石在哪 (普适查找)(UVa10474,Where is the Marble?)
大意:给一序列,要求先将序列排序。再给n个数字,找到每个数字在序列中的位置题目(提交)网址→UVa-10474百度翻译→百度翻译没使用过该网站的同学请猛戳这里→vJudge教程思路数组存入,sort排序,find或lower_bound查找。分析:最开始没有注意到n是有上限的,于是开了一个vector(小声哔哔,vector比数组慢了一倍有余),将vector换成数组就是最佳解...原创 2020-02-22 18:19:36 · 765 阅读 · 0 评论 -
解题报告——例题 5-6团体队列(Team Queue UVa 540)——31行代码解决
题目大意:有t个团队的人正在排一个长队,每次新来一个人时,如果他有队友在排队,那么这个新人会插队到最后一个队友的身后。如果没有任何一个队友排队,那么他会排到长队的队尾。输入每个团队中所有队员的编号,要求支持如下三种指令(前两种指令可穿插进行):*ENQUEUE x:编号为x的人进入长队*DEQUEUE:长队的队首出队*STOR:停止模拟对于每个DEQUEUE指令,输出出队的人的编号。样...原创 2020-03-07 21:50:14 · 1072 阅读 · 2 评论 -
解题报告——例题5-5 集合栈计算机 UVa12096
五个操作:1、PUSH:空集{}入栈2、DUP:当前栈顶元素复制一份在入栈3、UNION:出栈两个集合,然后把二者的并集入栈4、INTERSECT:出栈两个元素,然后把二者的交集入栈5、ADD:出栈两个集合,把先出栈的集合加入到后出栈的集合中,结果入栈心路历程:这道题当真卡了我好久好久,因为涉及到了4个容器的搭配使用,最开始总是搞不懂其中的逻辑,一度想要放弃,两次都从椅子上站起来不想...原创 2020-03-07 12:20:33 · 1193 阅读 · 2 评论 -
快来mark! 结构体重载运算符大全(运算、比较、赋值、输入输出)
学习紫皮书的结构体重载时,刘先生只给了加法、输出两种重载方式,成功激发了笔者的探索欲(不学懂心痒痒系列)。但当笔者网搜时,弹出的结果可真是千奇百怪、五花八门。有定义在结构体里的, 有定义在外面的, 有缺比较的,有缺输入输出的,简直惨不忍睹。让人头晕眼花。经历了漫长的修炼,笔者终于mark齐了统一格式的全部的运算符重载,分享给大家,让我们一起:吧!注:笔者采用结构体内定义的方式,将运算符分...原创 2020-02-22 12:53:55 · 6136 阅读 · 1 评论 -
算法竞赛入门经典(第二版) | 例题5-4 反片语 (map+标准化)(UVa156,Ananagrams)
题目大意:输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词。在判断是否满足条件时,字母不分大小写,但在输出时应保留输入中的大小写,按字典序排列。题目(提交)链接→UVa-156没使用过该网站的同学请猛戳这里→vJudge教程储备知识:标准化:将一个字符串中所有字母化简为小写,并按其字典序排列的过程叫标准化。分析: 此题大水...原创 2020-02-26 16:09:40 · 773 阅读 · 0 评论 -
算法竞赛入门经典(第二版) | 例题5-2 木块问题 (紫皮书牛啤!)(UVa101,The Blocks Problem)
大意:输入n,代表n个木块,输入最多n种操作类型,按类型对木块进行操作,读入quit结束输入输出格式:1、move a onto b:将a和b所在上方的方块先归位,再将a移到b所在柱子2、move a over b:仅将a所在上方的方块先归位,再将a移到b所在柱子3、pile a onto b:将b所在上方的方块先归位,再将a及其上方的所有方块移到b所在柱子4、pile a ov...原创 2020-02-24 12:21:12 · 577 阅读 · 0 评论 -
简洁明了——STL容器库之set头文件常用函数集合
简介: 1、同vector封装数组,list封装链表一样,set和map封装了二叉树(红黑树,性能优于平衡二叉树)2、有序且去重3、插入、删除、查找效率高(二叉树)4、插入or删除后迭代器仍有效5、所有容器的插入删除都需要迭代器 为了更方便、易懂, 笔者将每个函数的用法都注释在了代码中,同学们想要验证或加深印象直接复制到编译器里就可以运行。代码:#include <...原创 2020-02-24 16:28:11 · 1873 阅读 · 0 评论 -
【最后测试点超时】1063 Set Similarity (25 分)_22行代码AC
立志用最少的代码做最高效的表达PAT甲级最优题解——>传送门Given two sets of integers, the similarity of the sets is defined to be Nc/Nt×100%, where Nc is the number of distinct common numbers shared by the two sets, and Nt is the total number of distinct numbers i原创 2021-02-27 17:04:08 · 589 阅读 · 0 评论 -
案例4-1.6 树种统计 (25 分)_18行代码AC
立志用最少的代码做最高效的表达随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。输入格式:输入首先给出正整数N(≤10^5),随后N行,每行给出卫星观测到的一棵树的种类名称。种类名称由不超过30个英文字母和空格组成(大小写不区分)。输出格式:按字典序递增输出各种树的种类名称及其所占总数的百分比,其间以空格分隔,保留小数点后4位。输入样例:29Red AlderAshAspenBasswood原创 2021-03-16 22:50:52 · 511 阅读 · 0 评论