算法
一叶之修
内疚学习法
展开
-
快速排序 算法 基础实现 java
记录算法点滴 个人系统学习算法时敲的,可能有点基础,但注释比较详细,有需要的参考下哦~ /** * 快速排序 O(nlogn) * @author 叶 * */public class 快速排序 { public static void main(String[] args) { // TODO Auto-generated method s...原创 2018-08-04 23:43:46 · 227 阅读 · 0 评论 -
归并排序 算法 基础实现 java
记录算法点滴 本人当时系统学习时敲的,比较基础的实现,不过注释比较全,有需要的小伙伴可以参考下,点波关注,嘻嘻~ /** * 归并排序 * @author 叶叶叶 * */public class 归并排序 { public static void main(String[] args) { } static void ...原创 2018-08-04 23:46:59 · 145 阅读 · 0 评论 -
蓝桥杯 算法提高 断案
一道推断题 Description 公安人员审问甲、乙、丙、丁四个嫌疑犯,已确知,这四个人当中仅有一人是偷窃者,还知道这四个人的答话,要么完全诚实,要么完全说谎。在回答公安人员的问话中: 甲说:“乙没有偷,是丁偷的。” 乙说:“我没有偷,是丙偷的。” 丙说:“甲没有偷,是乙偷的。” 丁说:“我没有偷,我用的那东西是我家里的。” 请...原创 2018-08-19 11:46:34 · 1217 阅读 · 0 评论 -
leetcode 42. 接雨水(Trapping Rain Water)
42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6...原创 2018-08-22 19:29:15 · 378 阅读 · 0 评论 -
蓝桥杯 算法提高 凶手
一道推断题算法提高 凶手Description 巴斯维克命案抓住了六个嫌疑犯,他们的口供如下: A:我不是罪犯 B:A、C中有一个是罪犯 C:A和B说了假话 D:C和F说了假话 E:其他五个人中,只有A和D说了真话 F:我是罪犯 他们中只有一半说了真话,凶手只有一个。 本题可能有多种可能性,即正确答案(找到唯一的凶手)可能有多...原创 2018-08-22 23:03:40 · 841 阅读 · 0 评论 -
蓝桥杯 算法提高 质数的后代 java
素数筛选法 算法提高 质数的后代Description 在上一季里,曾提到过质数的孤独,其实从另一个角度看,无情隔膜它们的合数全是质数的后代,因为合数可以由质数相乘结合而得。 如果一个合数由两个质数相乘而得,那么我们就叫它是质数们的直接后代。现在,给你一系列自然数,判断它们是否是质数的直接后代。Input 输入描述: 第一行一个正整数T,表示需要...原创 2018-08-23 01:33:06 · 436 阅读 · 0 评论 -
蓝桥杯 算法提高 扫雷 java
算法提高 扫雷Description 扫雷游戏你一定玩过吧!现在给你若干个n×m的地雷阵,请你计算出每个矩阵中每个单元格相邻单元格内地雷的个数,每个单元格最多有8个相邻的单元格。 0<n,m<=100Input 输入描述: 输入包含若干个矩阵,对于每个矩阵,第一行包含两个整数n和m,分别表示这个矩阵的行数和列数。接下来n行每行包含m个字符。安全区域用‘...原创 2018-08-27 22:40:58 · 718 阅读 · 0 评论 -
蓝桥杯 算法提高 分分钟的碎碎念 java
算法提高 分分钟的碎碎念Description 以前有个孩子,他分分钟都在碎碎念。不过,他的念头之间是有因果关系的。他会在本子里记录每一个念头,并用箭头画出这个念头的来源于之前的哪一个念头。翻开这个本子,你一定会被互相穿梭的箭头给搅晕,现在他希望你用程序计算出这些念头中最长的一条因果链。 将念头从1到n编号,念头i来源于念头from[i],保证from[i]<i,f...原创 2018-08-27 22:53:58 · 322 阅读 · 0 评论 -
算法提高 Torry的困惑(提高型)
素数筛选法 题目描述Torry从小喜爱数学。一天,老师告诉他, 像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉 老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这 个数模上50000的值...原创 2018-08-27 23:03:40 · 451 阅读 · 0 评论 -
蓝桥杯 算法训练 阿尔法乘积 java
问题描述 计算一个整数的阿尔法乘积。对于一个整数x来说,它的阿尔法乘积是这样来计算的:如果x是一个个位数,那么它的阿尔法乘积就是它本身;否则的话,x的阿尔法乘积就等于它的各位非0的数字相乘所得到的那个整数的阿尔法乘积。例如:4018224312的阿尔法乘积等于8,它是按照以下的步骤来计算的: 4018224312 → 4*1*8*2*2*4*3*1*2 → 3072 → 3*7*2 → ...原创 2018-08-27 23:12:21 · 511 阅读 · 0 评论 -
蓝桥杯 算法提高 笨小猴 java
又是一道质数题 算法提高 笨小猴Description 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这...原创 2018-08-27 23:24:04 · 309 阅读 · 0 评论 -
蓝桥杯 算法提高 特殊的质数肋骨
不一样的质数题 算法提高 特殊的质数肋骨Description 农民约翰母牛总是产生最好的肋骨。你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们。农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质数。 例如有四根肋骨的数字分别是:7 3 3 1,那么全部肋骨上的数字 7331是质数;三根肋...原创 2018-08-27 23:35:03 · 998 阅读 · 1 评论 -
蓝桥杯 算法训练 调和数列问题
水题一道,暴力解决 算法训练 调和数列问题 时间限制:1.0s 内存限制:512.0MB 提交此题 问题描述 输入一个实数x,求最小的n使得,1/2+1/3+1/4+…+1/(n+1)>=x。 输入的实数x保证大于等于0.01,小于等于5.20,并且恰好有两位小数。你的程序要能够处理多组数据,即不停地读入x,如果x不等于0.00,则计算答案,否则退出程序。...原创 2018-08-27 23:38:29 · 568 阅读 · 0 评论 -
蓝桥杯 算法提高 选择排序
递归 算法提高 选择排序 Description 选择排序Input 输入描述: 排序,顾名思义,是将若干个元素按其大小关系排出一个顺序。形式化描述如下:有n个元素a[1],a[2],…,a[n],从小到大排序就是将它们排成一个新顺序a[i[1]]<a[i[2]]<…<a[i[n]] i[k]为这个新顺序。 选择排...原创 2018-08-28 01:08:12 · 296 阅读 · 0 评论 -
leetcode 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)
无重复字符的最长子串 题目(Medium)Given a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is 3.Given "bb...原创 2018-08-28 01:59:16 · 125 阅读 · 0 评论 -
蓝桥杯 算法训练 明明的随机数
一道排序题 算法训练 明明的随机数Description 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。 ...原创 2018-08-21 20:54:19 · 350 阅读 · 1 评论 -
蓝桥杯 算法提高 种树
题目描述 A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树。园林部门 得到指令后,初步规划出n个种树的位置,顺时针编号1到n。并且每个位置都有一个美观度Ai,如果在这里种树就可以得到这Ai的美观度。但由于A城市土壤 肥力欠佳,两棵树决不能种在相邻的位置(i号位置和i+1号位置叫相邻位置。值得注意的是1号和n号也算相邻位置!)。 最终市政府给园林部门...原创 2018-08-30 00:34:07 · 363 阅读 · 0 评论 -
蓝桥杯 算法提高 开灯游戏
题目描述有9盏灯与9个开关,编号都是1~9。 每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的)。 具体如下: 第一个开关控制第二,第四盏灯; 第二个开关控制第一,第三,第五盏灯; 第三个开关控制第二,第六盏灯; 第四个开关控制第一,第五,第七盏灯; 第五个开关控制第二,第四,第六,第八盏灯; 第六个开关控制第三,第五,第九盏灯; 第七个开关...原创 2018-08-30 00:37:40 · 1633 阅读 · 0 评论 -
leetcode 20. 有效的括号(Valid Parentheses)
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false...原创 2018-08-30 00:44:22 · 312 阅读 · 0 评论 -
leetcode 455. 分发饼干(Assign Cookies) java beat 100%
一道贪心水题 beat100% 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最...原创 2018-08-30 00:52:30 · 370 阅读 · 0 评论 -
leetcode 36. 有效的数独(Valid Sudoku)
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 '.' 表示。示例 1:输入:[ ["5","3",".",".","...原创 2018-08-30 00:58:16 · 85 阅读 · 0 评论 -
leetcode 14. 最长公共前缀(14. Longest Common Prefix)
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入原创 2018-08-30 01:02:56 · 94 阅读 · 0 评论 -
leetcode 67. 二进制求和(Add Binary)
easy understand method 给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101" 思路:并不是1ms解法,普通做法,提原创 2018-08-30 01:08:41 · 139 阅读 · 1 评论 -
leetcode 37. 解数独(Sudoku Solver)
编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 '.' 表示。一个数独。答案被标成红色。Note:给定的数独序列只包含数字 1-9 和字符 '.' 。 你可以假设给定的数独只有唯一解...原创 2018-08-30 01:14:12 · 231 阅读 · 0 评论 -
leetcode 206. 反转链表(Reverse Linked List) java beat 100%
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 原题链接 建议递归和非递归都实现一下 非递归 public ListNode ...原创 2018-09-08 13:58:07 · 171 阅读 · 0 评论 -
leetcode 83. 删除排序链表中的重复元素(Remove Duplicates from Sorted List) java beat 100%
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3 思路:cur.next = cur.next.next;// cur不需要++,因为下一个仍是待判断元素,它也有可能仍...原创 2018-09-08 15:07:28 · 93 阅读 · 0 评论 -
leetcode 100. 相同的树(Same Tree) java beat 100%
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...原创 2018-09-09 00:05:09 · 231 阅读 · 0 评论 -
leetcode 257. 二叉树的所有路径(Binary Tree Paths)
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 原题链接 dfs还不是熟悉,此方式并不是最优方法...原创 2018-09-09 00:10:54 · 96 阅读 · 0 评论 -
leetcode 671. 二叉树中第二小的节点(Second Minimum Node In a Binary Tree) java beat 100%
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。 给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。示例 1:输入: 2 / \ 2 5 / \ 5 7输出: 5说明: 最小的值是...原创 2018-09-09 00:17:59 · 358 阅读 · 0 评论 -
leetcode 226. 翻转二叉树(Invert Binary Tree) java beat 100%
翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1 备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是...原创 2018-09-09 00:27:06 · 304 阅读 · 0 评论 -
leetcode 96. 不同的二叉搜索树(Unique Binary Search Trees) java beat 100%
给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 ...原创 2018-09-16 00:37:44 · 315 阅读 · 0 评论 -
leetcode 687. 最长同值路径(Longest Univalue Path)
给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。示例 1:输入: 5 / \ 4 5 / \ \ 1 1 5输出:2示例 2:...原创 2018-09-16 10:12:59 · 239 阅读 · 0 评论 -
leetcode 腾讯 2018 秋招精选(50 题)
前面原题链接,后面题解链接 原题(50题)链接 目录 # 题名 解答 通过率 难度 104 二叉树的最大深度 64.1% 简单 344 反转字符串 62.5% 简单 292 ...原创 2018-09-16 10:24:11 · 4673 阅读 · 0 评论 -
leetcode 104. 二叉树的最大深度(Maximum Depth of Binary Tree)
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。 原题链接 思路:递归,从递归的思想出发,每步可以简单...原创 2018-09-16 10:31:15 · 236 阅读 · 0 评论 -
leetcode 344. 反转字符串(Reverse String)
编写一个函数,其作用是将输入的字符串反转过来。示例 1:输入: "hello"输出: "olleh"示例 2:输入: "A man, a plan, a canal: Panama"输出: "amanaP :lanac a ,nalp a ,nam A" 原题链接 思路:这题相对比较基础,所以对自己也要更高一点,对比多几种方式,下面为其中之一,另外一...原创 2018-09-16 10:50:30 · 234 阅读 · 0 评论 -
leetcode 292. Nim游戏(Nim Game)
你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3...原创 2018-09-16 11:27:05 · 380 阅读 · 0 评论 -
leetcode 557. 反转字符串中的单词 III(Reverse Words in a String III)
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。 原题链接 思路先spilt分隔空格,调用自己写...原创 2018-09-16 12:36:04 · 166 阅读 · 0 评论 -
leetcode 237. 删除链表中的节点(Delete Node in a Linked List)
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 -- head = [4,5,1,9],它可以表示为: 4 -> 5 -> 1 -> 9示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之...原创 2018-09-16 12:51:47 · 230 阅读 · 0 评论 -
leetcode 136. 只出现一次的数字(Single Number)
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4 思路:这题如果使用哈希表来做也很简单,但这里可以只用数组实现,先把数组排好序,然后判断...原创 2018-09-16 12:57:21 · 175 阅读 · 0 评论 -
leetcode 169. 求众数(Majority Element)
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2 原题链接 思路:使用哈希表,这解法比较暴力,不详细介绍了 class Solut...原创 2018-09-16 13:10:59 · 171 阅读 · 0 评论