
算法题
Danie_wu
努力学习中!!!!!
展开
-
图(leetcode-785)-判断二分图
class Solution { /** 参数:graph, graph[u]表示一个节点数组,由节点u的领接节点组成 */ public boolean isBipartite(int[][] graph) { // 定义 visited 数组,初始值为 0 表示未被访问,赋值为 1 或者 -1 表示两种不同的颜色。 int[] visited = new int[graph.length]; // 因为图中可能含.原创 2022-01-03 14:10:22 · 328 阅读 · 0 评论 -
贪心算法(leetcode-1005):k 次取反后最大化的数组和
思路:1、对原数组排一次序。2、迭代k次取反中,考虑小于0和大于0的情况。 2.1 小于0的数组区间,直接取反,到达负数和正数界限时跳过。 2.2 大于0的数组区间,直接取反。3、累计数组。class Solution { public int largestSumAfterKNegations(int[] nums, int k) { if (nums.length == 1) return k % 2 == 0 ? nums[...原创 2021-10-20 10:20:57 · 223 阅读 · 0 评论 -
贪心算法(leetcode-45):跳跃游戏||
思想:每次在上次能跳到的范围(end)内选择一个能跳的最远的位置(也就是能跳到max_far位置class Solution { public int jump(int[] nums) { int end = 0; //上次跳跃可达范围右边界(下次的最右起跳点) int maxFar = 0; //目前能跳到的最远位置 int step = 0; // 跳跃次数 for(int i = 0; i < nums原创 2021-10-19 11:52:18 · 1448 阅读 · 0 评论 -
贪心算法(leetcode-55):跳跃游戏
思路:跳几步无所谓,关键在于可跳的覆盖范围!不一定非要明确一次究竟跳几步,每次取最大的跳跃步数,这个就是可以跳跃的覆盖范围。这个范围内,别管是怎么跳的,反正一定可以跳过来。问题就转化为跳跃覆盖范围究竟可不可以覆盖到终点!算法步骤:每次移动取最大跳跃步数(得到最大的覆盖范围),每移动一个单位,就更新最大覆盖范围。贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点。class Solution { //跳...原创 2021-10-19 11:11:52 · 1799 阅读 · 0 评论 -
贪心算法(leetcode-122):买卖股票的最佳时机
思路:1、把利润分解为每天为单位的维度,而不是从0天到第3天整体去考虑!那么根据prices可以得到每天的利润序列:(prices[i] - prices[i - 1]).....(prices[1] - prices[0])。收集正利润的区间,就是股票买卖的区间,而我们只需要关注最终利润,不需要记录区间。2、局部最优:收集每天的正利润,全局最优:求得最大利润。class Solution { public int maxProfit(int[] prices) {原创 2021-10-19 11:01:44 · 250 阅读 · 0 评论 -
贪心算法(leetcode-376):摆动序列
思路:局部最优:删除单调坡度上的节点(不包括单调坡度两端的节点),那么这个坡度就可以有两个局部峰值。整体最优:整个序列有最多的局部峰值,从而达到最长摆动序列。实际操作上,其实连删除的操作都不用做,因为题目要求的是最长摆动子序列的长度,所以只需要统计数组的峰值数量就可以了(相当于是删除单一坡度上的节点,然后统计长度)class Solution { public int wiggleMaxLength(int[] nums) { if(nums.length <.原创 2021-10-18 20:39:30 · 229 阅读 · 0 评论 -
平方十位数
标题:平方十位数由0~9这10个数字不重复、不遗漏,可以组成很多10位数字。这其中也有很多恰好是平方数(是某个数的平方)。比如:1026753849,就是其中最小的一个平方数。请你找出其中最大的一个平方数是多少?注意:你需要提交的是一个10位数字,不要填写任何多余内容。答案为:9814072356思路:枚举32043~100000这些数的平方数是否包含0~9,显然要用大数字运算代码:public ...原创 2018-06-06 19:45:31 · 507 阅读 · 0 评论 -
译码
链接:https://www.nowcoder.com/acm/contest/124/A来源:牛客网现在定义一种编码规则:对于长度为3的字符串(均由小写字母组成),首先按照字典序进行排序,即aaa,aab,aac,…,zzz,将这些字符串按照顺序依次从00001至17575编码(前缀0不可省略),即aaa=00000,aab=00001,aac=00002,…,zzz=17575。现在给出一串数...原创 2018-05-23 23:27:55 · 408 阅读 · 0 评论 -
第九届蓝桥杯——明码
标题:明码汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛。16点阵的字库把每个汉字看成是16x16个像素信息。并把这些信息记录在字节中。一个字节可以存储8位信息,用32个字节就可以存一个汉字的字形了。把每个字节转为2进制表示,1表示墨迹,0表示底色。每行2个字节,一共16行,布局是: 第1字节,第2字节 第3字节,第4字节 .... 第31字节, 第32字...原创 2018-05-13 20:26:03 · 464 阅读 · 0 评论 -
简单多边形
链接:https://www.nowcoder.com/acm/contest/110/B来源:牛客网题目描述为了让所有选手都感到开心,Nowcoder练习赛总会包含一些非常基本的问题。 比如说: 按顺时针或逆时针方向给你一个简单的多边形的顶点坐标,请回答此多边形是顺时针还是逆时针。 输入描述:输入包含N + 1行。第一行包含一个整数N,表示简单多边形的顶点数。在下面的N行中,第i行包含两个...原创 2018-05-18 23:02:54 · 644 阅读 · 0 评论 -
N阶魔方
【问题描述】n阶魔方,又叫幻方阵,在我国古代称为“从横图”,是一个比较有趣的游戏。所谓N阶魔方就是一个填数字游戏。要求用1到N*N的数字(N为奇数)不重复地填入方阵中,使得每一行、每一列、每条对角线的数字累加和都相等。如: 8 1 63 5 74 9 2算法分析:⑴将1放在第一行中间一列;⑵从2开始直到n×n止各数依次按下列规则存放;每一个原创 2018-03-17 13:00:25 · 1431 阅读 · 0 评论 -
第39级台阶
【问题描述】小明刚刚看完电影《第39级台阶》。离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!站在台阶前,他突然又想着一个问题:如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?请你利用计算机的优势,帮助小明寻找答案。此问题重点在于走的最后步数是偶数步,要完成39级台原创 2018-03-11 21:15:48 · 565 阅读 · 0 评论 -
出栈次序
【问题描述】X星球特别讲究秩序,所有道路都是单行线。一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中,缓缓前行。路边有个死胡同,只能容一辆车通过,是临时的检查站,如图所示。X星球太死板,要求每辆路过的车必须进入检查站,也可能不检查就放行,也可能仔细检查。如果车辆进入检查站和离开的次序可以任意交错。那么,该车队再次上路后,可能的次序有多少种?为了方便起见,假设检查原创 2018-03-11 20:29:27 · 227 阅读 · 0 评论 -
某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:
某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪: 每位选手需要回答10个问题(其编号为1到10),越后面越有难度。 答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。 每位选手都有一个起步的分数为10分。 某获胜选手最终得分刚好是100分,如果不让你看比赛过程, 你能推断出他(她)哪个题目答对原创 2018-03-07 20:48:05 · 1713 阅读 · 0 评论