基础算法题
基础算法题
咖啡壶子
踏踏实实做人,脚踏实地做事
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指 Offer 09. 用两个栈实现队列(js实现)
剑指 Offer 09. 用两个栈实现队列原创 2022-03-04 15:30:55 · 378 阅读 · 0 评论 -
LeetCode经典栈-有效的括号(难度:⭐)
有效的括号题目解题思路代码 题目 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 示例 1: 输入:s = “()” 输出:true 示例 2: 输入:s = “()[]{}” 输出:true 提示: 1 <= s.length <= 104 s 仅由括号 ‘()[]{}’ 组成 解题思路 首先看到括号,左边和右边,我们会想到用栈解决问题。想原创 2021-09-21 11:14:07 · 169 阅读 · 0 评论 -
LeetCode初级-16-最长公共前缀
题目描述: 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入:strs = [“flower”,“flow”,“flight”] 输出:“fl” 示例 2: 输入:strs = [“dog”,“racecar”,“car”] 输出:"" 解释:输入不存在公共前缀。 提示: 1 <= strs.length <= 200 0 <= strs[i].length <= 200 strs[i] 仅由小写英文字母组成 方法原创 2021-09-01 18:20:12 · 234 阅读 · 0 评论 -
剑指offer-02-替换空格
描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 示例1 输入: “We Are Happy” 复制 返回值: “We%20Are%20Happy” package day20210826; public class 替换空格 { public static void main(String[] args) { // TODO Auto-generated method stub原创 2021-08-26 22:46:47 · 191 阅读 · 0 评论 -
剑指offer-01-二维数组中的查找
描述 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 [ [1,2,8,9], [2,4,9,12], [4,7,10,13], [6,8,11,15] ] 给定 target = 7,返回true。 给定 target = 3,返回 false。 0 <= array.length <= 500 0 <= array[0].leng.原创 2021-08-26 00:05:56 · 236 阅读 · 0 评论 -
LeetCode初级-15-删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。 现有一个链表 – head = [4,5,1,9],它可以表示为: 示例 1: 输入:head = [4,5,1,9], node = 5 输出:[4,1,9] 解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. 示例 2: 输入:head = [4,5,1,9], node = 1 输出:[4,5,9] 解释:给定你链表中值为 1 的第三原创 2021-08-17 19:07:05 · 177 阅读 · 0 评论 -
LeetCode初级-14-验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串 示例 1: 输入: “A man, a plan, a canal: Panama” 输出: true 解释:“amanaplanacanalpanama” 是回文串 示例 2: 输入: “race a car” 输出: false 解释:“raceacar” 不是回文串 提示: 1 <= s.length <= 2 * 105 字符串 s 由 ASCI.原创 2021-08-16 20:53:41 · 324 阅读 · 0 评论 -
LeetCode初级-13-字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true 示例 2: 输入: s = “rat”, t = “car” 输出: false 提示: 1 <= s.length, t.length <= 5 * 104 s 和 t 仅包含小写字母 package day2021081.原创 2021-08-15 20:38:54 · 224 阅读 · 0 评论 -
LeetCode初级-12-移动0
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 package day20210815; public class 移动0 { public static void main(String[]args) { int []nums1= {0,1,0,3,12}; moveZeroes(nums1).原创 2021-08-15 11:56:07 · 172 阅读 · 0 评论 -
LeetCode初级-11-两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9] 说明: 输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。 我们可以不考虑输出结果的顺序。 package day20210814; import java.util.Arrays; import java.util.原创 2021-08-14 19:11:10 · 233 阅读 · 0 评论 -
LeetCode初级-10-存在重复元素
给定一个整数数组,判断是否存在重复元素。 如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 示例 1: 输入: [1,2,3,1] 输出: true 示例 2: 输入: [1,2,3,4] 输出: false 示例 3: 输入: [1,1,1,3,3,4,3,2,4,2] 输出: true package day20210812; import java.util.Arrays; public class 数字重复 { public.原创 2021-08-12 19:58:09 · 201 阅读 · 0 评论 -
LeetCode初级-09-字符串中的第一个唯一字符
字符串中的第一个唯一字符 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 示例: s = “leetcode” 返回 0 s = “loveleetcode” 返回 2 提示:你可以假定该字符串只包含小写字母。 使用map集合,遍历字符串,并将字符串中的每个字符和出现的次数存到map集合里,遍历集合若得到的次数值是1,则返回该字符的下标,否则返回-1. public int firstUniqChar(String s) { HashMap.原创 2020-10-07 08:32:19 · 416 阅读 · 0 评论 -
LeetCode初级-08-整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0 package day20200922; public class day { public static void.原创 2020-10-05 09:10:44 · 350 阅读 · 0 评论 -
LeetCode初级-07-反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1: 输入:[“h”,“e”,“l”,“l”,“o”] 输出:[“o”,“l”,“l”,“e”,“h”] 示例 2: 输入:[“H”,“a”,“n”,“n”,“a”,“h”] 输出:[“h”,“a”,“n”,“n”,“a”,“H”] 作者:力扣原创 2020-10-05 08:44:39 · 225 阅读 · 0 评论 -
LeetCode初级-06-旋转数组
旋转数组 给定一个数组,将数组中的元素向右移动 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 = 2 输出: [3,99,-1,-100] 解释: 向右旋转 1 步: [99,-1,.原创 2020-09-22 20:27:59 · 279 阅读 · 0 评论 -
蓝桥杯试题--基础练习 杨辉三角形
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行: 1 1 1 1 2 1 1 3 3 1 给出n,输出它的前n行。 输入格式 输入包含一个数n。 输出格式 输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。 样例输入 4 样例输出 1 .原创 2020-09-19 21:13:11 · 450 阅读 · 0 评论 -
蓝桥杯试题--基础练习 十进制转十六进制
试题 基础练习 十进制转十六进制 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。 给出一个非负整数,将它表示成十六进制的形式。 输入格式 输入包含一个非负整数a,表示原创 2020-09-19 21:08:24 · 241 阅读 · 0 评论 -
蓝桥杯试题--基础练习 十六进制转十进制
资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System..原创 2020-09-19 20:26:57 · 412 阅读 · 0 评论 -
蓝桥杯试题--基础练习 十六进制转八进制
资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数n (1<=n<=10)。接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式 输出n行,每行为输入对应的八进制正整数。 【注意】输入的十六进制数不会有前导0,比如012A。 输出的八进制数也不能有前导0。 样例输入 2 39.原创 2020-09-19 20:23:43 · 344 阅读 · 0 评论 -
LeetCode初级-05-合并两个有序数组
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 输出: [1,2,2,3,5,6] class Solut.原创 2020-09-18 20:44:36 · 329 阅读 · 0 评论 -
蓝桥杯试题--基础练习 闰年判断
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个年份,判断这一年是不是闰年。 当以下情况之一满足时,这一年是闰年: 年份是4的倍数而不是100的倍数; 年份是400的倍数。 其他的年份都不是闰年。 输入格式 输入包含一个整数y,表示当前的年份。 输出格式 输出一行,如果给定的年份是闰年,则输出yes,否则输出no。 说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。 样例输入 2013 样例输出原创 2020-09-18 20:43:31 · 616 阅读 · 0 评论 -
蓝桥杯试题--基础练习 特殊回文数
试题 基础练习 特殊回文数 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。 输入格式 输入一行,包含一个正整数n。 输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行。 样例输入 52 样例输出 899998 989989 998899 数据规模和约定 1<=n<=54。 i原创 2020-09-17 21:07:50 · 307 阅读 · 0 评论 -
蓝桥杯试题--基础练习 数列排序
资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200 输入格式 第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。 输出格式 输出一行,按从小到大的顺序输出排序后的数列。 样例输入 5 8 3 6 4 9 样例输出 3 4 6 8 9 public class Main { public static void main(String.原创 2020-09-17 20:54:05 · 503 阅读 · 0 评论 -
蓝桥杯试题-- 入门训练 Fibonacci数列
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数。 说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比.原创 2020-09-17 20:31:56 · 340 阅读 · 0 评论 -
LeetCode初级-04-只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 public int singleNumber(int[] nums) { int num = 0; for(int i = 0; i < nums.length; i++){ .原创 2020-09-15 20:19:03 · 192 阅读 · 0 评论 -
用递归做1+2+3+...+n求和
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 分析:用递归做最简单。循环调用 public int Sum(int n) { int i = 1 % n; return n + Sum_Solution_2(n - 1); } ...原创 2020-09-13 09:52:21 · 4332 阅读 · 0 评论 -
LeetCode初级-03-两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] ...原创 2020-09-13 09:37:40 · 235 阅读 · 0 评论 -
LeetCode初级-02-买卖股票的最佳时机 II
买卖股票的最佳时机 II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买入,在第原创 2020-09-12 15:50:28 · 301 阅读 · 0 评论 -
LeetCode初级-01-从排序数组中删除重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例 2: 给定 nums ...原创 2019-12-10 20:10:15 · 219 阅读 · 0 评论
分享