算法
前端小黑
never give up never give in
展开
-
leetcode股票买卖问题 js解法
714. 买卖股票的最佳时机含手续费题目给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每次交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。示例 1:输入: prices = [1, 3, 2, 8, 4, 9], fee ...原创 2020-02-29 19:35:50 · 723 阅读 · 0 评论 -
LeetCode 289.生命游戏 JavaScript
题目根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞具有一个初始状态 live(1)即为活细胞, 或 dead(0)即为死细胞。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;...原创 2020-02-01 22:48:52 · 281 阅读 · 0 评论 -
LeetCode 45. 跳跃游戏 II JavaScript实现
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。来源:力扣(LeetCode)链接:https://...原创 2020-01-22 19:22:49 · 739 阅读 · 0 评论 -
LeetCode 213.打家劫舍 II Java实现
题目你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例1:输入: [2,3,2]输出: 3...原创 2019-03-23 21:10:33 · 405 阅读 · 1 评论 -
LeetCode 60.第k个排列 Java实现
题目给出集合[1,2,3,…,n],其所有元素共有n! 种排列。按大小顺序列出所有排列情况,并一一标记,当n= 3 时, 所有排列如下:"123" "132" "213" "231" "312" "321"给定n和k,返回第k个排列。说明:给定n的范围是 [1, 9]。 给定k的范围是[1, n!]。示例1:输入: n = 3...原创 2019-04-02 21:20:24 · 462 阅读 · 0 评论 -
LeetCode 8. 字符串转换整数 (atoi) Java实现
题目请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这...原创 2019-04-20 15:53:27 · 575 阅读 · 0 评论 -
LeetCode 15 三数之和 JavaScript实现
题目给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]来源:力扣(L...原创 2019-09-23 21:04:14 · 209 阅读 · 0 评论 -
LeetCode 16 最接近的三数之和 JavaScript实现
题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).来源:力扣(LeetCode)链接:...原创 2019-09-28 11:13:25 · 288 阅读 · 0 评论 -
LeetCode 682棒球比赛
题目你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数。2. “+”(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。3. “D”(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。4. “C”(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效的,应...原创 2019-09-29 14:47:33 · 159 阅读 · 0 评论 -
leetCode 650 只有两个键的键盘
题目最初在一个记事本上只有一个字符 ‘A’。你每次可以对这个记事本进行两种操作:Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。Paste (粘贴) : 你可以粘贴你上一次复制的字符。给定一个数字 n 。你需要使用最少的操作次数,在记事本中打印出恰好 n 个 ‘A’。输出能够打印出 n 个 ‘A’ 的最少操作次数。示例 1:输入: 3输...原创 2019-10-03 23:00:08 · 185 阅读 · 0 评论 -
牛客 剑指offer二维数组中的查找
题目时间限制:1秒 空间限制:32768K 热度指数:1421035本题知识点: 查找 数组算法知识视频讲解题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路这道题固然可以直接使用暴力法解决,但是这里就不说暴力法了对于这道题,...原创 2019-10-08 22:17:44 · 446 阅读 · 0 评论 -
LeetCode 63.不同路径 II Java实现
题目一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用1和0来表示。说明:m和n的值均不超过 100。示例1:输入:[...原创 2019-03-23 16:07:36 · 253 阅读 · 0 评论 -
LeetCode 122.买卖股票的最佳时机 Java实现
题目给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 ...原创 2019-03-26 16:54:29 · 267 阅读 · 0 评论 -
LeetCode 62.不同路径 Java实现
题目一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?说明:m和n的值均不超过 100。示例1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1....原创 2019-03-23 15:49:39 · 860 阅读 · 0 评论 -
LeetCode 38.报数 Java实现
题目报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" (&quo原创 2019-02-23 00:55:56 · 515 阅读 · 1 评论 -
LeetCode 11.盛最多的水 java实现
题目给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够...原创 2019-02-23 23:50:56 · 282 阅读 · 0 评论 -
LeetCode 12.整数转罗马数字 Java实现
题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并...原创 2019-02-24 00:57:08 · 510 阅读 · 0 评论 -
LeetCode 43.字符串相乘 Java实现
题目给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1 和 num2 的长度小于110。 nu原创 2019-02-25 01:39:07 · 417 阅读 · 0 评论 -
LeetCode 2.两数相加 Java实现
题目给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 ->...原创 2019-02-25 16:33:19 · 257 阅读 · 0 评论 -
LeetCode 6.z字形变换 Java实现
题目将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行...原创 2019-02-26 00:57:58 · 410 阅读 · 0 评论 -
蓝桥杯 算法训练 数字三角形 Java实现
题目问题描述 (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大。 ●每一步可沿左斜线向下或右斜线向下走; ●1<三角形行数≤100; ●三角形中的数字为整数0,1,…99; . (图3.1-1)输入格式 文件中首先读到的是三角形的行数。 接下来描述整个三角形输出格式 最大总和...原创 2019-03-20 22:09:00 · 949 阅读 · 0 评论 -
LeetCode 79.单词搜索 Java实现
题目给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "A...原创 2019-03-18 22:08:15 · 679 阅读 · 0 评论 -
LeetCode 42.接雨水 Java实现
题目给定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思路从两边找寻...原创 2019-03-29 22:15:45 · 407 阅读 · 0 评论 -
LeetCode 3. 无重复字符的最长子串 Java实现
题目给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复...原创 2019-03-30 12:25:37 · 256 阅读 · 0 评论 -
LeetCode 53.最大子序和 Java实现
题目给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。思路这里使用动态规划的思想,将前n位能取得的最大值放在第n位,与最大值进行比较,最大值初始为arr[0],如果nums[n]比max大,...原创 2019-03-23 15:44:54 · 303 阅读 · 0 评论 -
用java实现几种常用的排序(选择排序,冒泡排序,插入排序,希尔排序,快速排序,堆排序)
闲来无事写了几个java的排序,代码如下package sort;public class Sort { //生成含随机数的数组 public static int[] numGenerate(int n) { int[] arr=new int[n]; for(int index=0;index<n;index++) { arr[index]=(int)(...原创 2018-11-26 18:23:03 · 337 阅读 · 0 评论