基础算法题
基础算法题
咖啡壶子
踏踏实实做人,脚踏实地做事
展开
-
剑指 Offer 09. 用两个栈实现队列(js实现)
剑指 Offer 09. 用两个栈实现队列原创 2022-03-04 15:30:55 · 289 阅读 · 0 评论 -
LeetCode经典栈-有效的括号(难度:⭐)
有效的括号题目解题思路代码题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true提示: 1 <= s.length <= 104s 仅由括号 ‘()[]{}’ 组成解题思路首先看到括号,左边和右边,我们会想到用栈解决问题。想原创 2021-09-21 11:14:07 · 121 阅读 · 0 评论 -
LeetCode初级-16-最长公共前缀
题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。提示:1 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成方法原创 2021-09-01 18:20:12 · 142 阅读 · 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 · 134 阅读 · 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 <= 5000 <= array[0].leng.原创 2021-08-26 00:05:56 · 163 阅读 · 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 · 128 阅读 · 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 · 232 阅读 · 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 * 104s 和 t 仅包含小写字母package day2021081.原创 2021-08-15 20:38:54 · 142 阅读 · 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 · 119 阅读 · 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 · 166 阅读 · 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]输出: truepackage day20210812;import java.util.Arrays;public class 数字重复 { public.原创 2021-08-12 19:58:09 · 129 阅读 · 0 评论 -
LeetCode初级-09-字符串中的第一个唯一字符
字符串中的第一个唯一字符 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode” 返回 0s = “loveleetcode” 返回 2提示:你可以假定该字符串只包含小写字母。使用map集合,遍历字符串,并将字符串中的每个字符和出现的次数存到map集合里,遍历集合若得到的次数值是1,则返回该字符的下标,否则返回-1.public int firstUniqChar(String s) { HashMap.原创 2020-10-07 08:32:19 · 315 阅读 · 0 评论 -
LeetCode初级-08-整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0package day20200922;public class day { public static void.原创 2020-10-05 09:10:44 · 257 阅读 · 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 · 163 阅读 · 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 · 198 阅读 · 0 评论 -
蓝桥杯试题--基础练习 杨辉三角形
资源限制时间限制:1.0s内存限制:256.0MB问题描述杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。下面给出了杨辉三角形的前4行:11 11 2 11 3 3 1给出n,输出它的前n行。输入格式输入包含一个数n。输出格式输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。样例输入 4样例输出1.原创 2020-09-19 21:13:11 · 343 阅读 · 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 · 152 阅读 · 0 评论 -
蓝桥杯试题--基础练习 十六进制转十进制
资源限制时间限制:1.0s内存限制:512.0MB问题描述从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入FFFF样例输出65535import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System..原创 2020-09-19 20:26:57 · 330 阅读 · 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 · 251 阅读 · 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 · 238 阅读 · 0 评论 -
蓝桥杯试题--基础练习 闰年判断
资源限制时间限制:1.0s 内存限制:256.0MB问题描述给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年:年份是4的倍数而不是100的倍数;年份是400的倍数。其他的年份都不是闰年。输入格式输入包含一个整数y,表示当前的年份。输出格式输出一行,如果给定的年份是闰年,则输出yes,否则输出no。说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。样例输入2013样例输出原创 2020-09-18 20:43:31 · 512 阅读 · 0 评论 -
蓝桥杯试题--基础练习 特殊回文数
试题 基础练习 特殊回文数资源限制 时间限制:1.0s 内存限制:512.0MB问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n,编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。输入格式 输入一行,包含一个正整数n。输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行。样例输入52样例输出899998989989998899数据规模和约定 1<=n<=54。i原创 2020-09-17 21:07:50 · 228 阅读 · 0 评论 -
蓝桥杯试题--基础练习 数列排序
资源限制 时间限制:1.0s 内存限制:512.0MB问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200输入格式 第一行为一个整数n。第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式 输出一行,按从小到大的顺序输出排序后的数列。样例输入58 3 6 4 9样例输出3 4 6 8 9public class Main {public static void main(String.原创 2020-09-17 20:54:05 · 403 阅读 · 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 · 236 阅读 · 0 评论 -
LeetCode初级-04-只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4public int singleNumber(int[] nums) { int num = 0; for(int i = 0; i < nums.length; i++){ .原创 2020-09-15 20:19:03 · 126 阅读 · 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 · 4160 阅读 · 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 · 149 阅读 · 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 · 204 阅读 · 0 评论 -
LeetCode初级-01-从排序数组中删除重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums ...原创 2019-12-10 20:10:15 · 147 阅读 · 0 评论