![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法编程
Nannw
这个作者很懒,什么都没留下…
展开
-
股票的最大利润(感觉有点像打擂台)
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:入: [7,6,4,3,1]输出: 0解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。class Solution { pu原创 2020-07-10 13:47:31 · 124 阅读 · 0 评论 -
扑克牌里的顺子
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例 1:输入: [1,2,3,4,5]输出: True示例 2:输入: [0,1,1,2,5]输出: False限制:数组长度为 5数组的数取值为 [0, 13] .class Solution { public boolean isStraight(int[] nums) {原创 2020-07-10 10:01:49 · 221 阅读 · 0 评论 -
找出所有滑动窗口里的最大值
给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7 31 3 [-1 -3 5] 3 6 7 51 3 -1 [-3 5 3] 6 7原创 2020-07-09 18:46:33 · 483 阅读 · 0 评论 -
旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umghlrlose”class Solution { public String reverseLeftWords(String原创 2020-07-09 16:36:50 · 471 阅读 · 0 评论 -
语句翻转(字符串的基本操作)
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world! "输出: “world! hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: “a good原创 2020-07-09 14:33:57 · 755 阅读 · 0 评论 -
输入一个数组,当数组的某一行存在0,那么这一列上所有的数都变成0
输入一个数组,当数组的某一行存在0,那么这一列上所有的数都变成0。1例如:请输入数组行和列:3 3请输入数组:1 2 31 0 24 5 6输出数组1 2 30 0 04 5 62例如:请输入数组行和列:4 4请输入数组:1 2 3 40 5 6 78 9 10 1112 0 13 14输出数组1 2 3 40 0 0 08 9 10 110 0 0 0public static void main(String[] args) { // TODO Au原创 2020-07-09 10:41:59 · 396 阅读 · 0 评论 -
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度public static void main(String[] args) { // TODO Auto-generated method stub Scanner intput= new Scanner(System.in); System.out.println("please input string!!!"); String str = intput.nextLine(); ArrayList Alist = new原创 2020-07-09 10:29:48 · 2539 阅读 · 0 评论 -
谁拥有最多的糖果
给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。示例 1:输入:candies = [2,3,5,1,3], extraCandies = 3输出:[true,true,true,false,true]解释:孩子 1 有 2 个糖果,如果他得到所有原创 2020-07-08 14:35:33 · 130 阅读 · 0 评论 -
计算跳水板长度
你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。示例:输入:shorter = 1longer = 2k = 3输出: {3,4,5,6}提示:0 < shorter <= longer0 <= k <= 100000代码片.class Solution { public int[] di原创 2020-07-08 14:03:27 · 316 阅读 · 0 评论 -
一维数组的动态和
给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和.示例 1:输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。示例 2:输入:nums = [1,1,1,1,1]输出:[1,2,3,4,5]解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1]方法一:原创 2020-07-08 12:47:13 · 1608 阅读 · 0 评论 -
颠倒二进制位数
颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,因此返回 964176192,其二进制表示形式为 0011100101...原创 2019-08-10 17:37:22 · 1841 阅读 · 1 评论 -
最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。代码片.class Solution { public S...原创 2019-08-07 20:29:47 · 157 阅读 · 0 评论 -
判断括号是否有效
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “]”输出: false示例 4:输入: “([)]...原创 2019-08-09 21:15:48 · 2120 阅读 · 0 评论 -
链表的创建与操作
设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。...原创 2019-08-02 21:39:34 · 451 阅读 · 0 评论 -
用埃拉托斯特尼筛法求质数
埃拉托斯特尼筛法:埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。详细列出算法如下:列出2以后的所有序列:2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25标出序列中的第一个素数...原创 2019-08-03 16:35:33 · 1607 阅读 · 0 评论 -
统计字符串中的单词个数
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例:输入: “Hello, my name is John”输出: 5代码片.class Solution { public int countSegments(String s) { //如果当前字符不是空格,而上一个字符是空壳,那么这个就是一个单...原创 2019-08-03 18:57:32 · 3967 阅读 · 0 评论 -
数字反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。代码片.class Solut...原创 2019-08-03 21:09:42 · 179 阅读 · 0 评论 -
二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例1:给定二叉树 [3,9,20,null,null,15,7],3/ \ 9 20/ \ 15 7返回它的最小深度 2.示例2:给定二叉树 [3,9],3/9返回它的最小深度 2.代码片./** * Definition...原创 2019-08-08 15:12:34 · 187 阅读 · 0 评论 -
最短无序连续子数组
定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。说明 :输入的数组长度范围在 [1, 10,000]。输入的数组可能包...原创 2019-08-06 16:02:48 · 99 阅读 · 0 评论 -
旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [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:输入: [-1,-100,3,99] 和 k...原创 2019-08-08 17:05:36 · 75 阅读 · 0 评论 -
回文链表
请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true代码片./** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ...原创 2019-08-08 23:00:15 · 232 阅读 · 0 评论 -
最大子段的平均数
给定 n 个整数的数组,找出最大的子段,并输出该子段平均数。示例 1:输入: [-1,12,-5,-6,50,3],输出: 最大的和是54.0子段的开始位置:1 子段的结束位置:5最大子段平均数为:10.8解释: 最大平均数 (12-5-6+50+3)/(5-1+1) = 51/4 = 10.8代码片.public class Main { static int first...原创 2019-08-06 20:47:45 · 493 阅读 · 0 评论 -
二叉搜索数中的众数
给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2],12/2返回[2].代码片./** * Definition for a binary tr...原创 2019-08-09 17:35:09 · 165 阅读 · 0 评论 -
非递减数列
非递减数列给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),满足 array[i] <= array[i + 1]。示例 1:输入: [4,2,3]输出: True解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。示例...原创 2019-08-02 16:06:15 · 2268 阅读 · 2 评论