算法训练
文章平均质量分 73
记录一下在日常算法训练中的一些问题
短跑冠军小蜗牛
这个作者很懒,什么都没留下…
展开
-
牛客刷题-每日一刷错题集1
刷题时间-20190826 14:27刷题类型-程序语言-Java错题1.对于同一个类中的两个方法,在判断他们是不是重载方法时,肯定不考虑()A.参数个数 B.参数类型 C.返回值类型 D.返回值个数出错原因:对Java重载知识记忆不牢固。知识点回顾:(资料来源:https://www.runoob.com/java...原创 2019-08-26 15:04:15 · 265 阅读 · 0 评论 -
Leetcode刷题-692-前K个高频单词【Java】
1.题目描述给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2 输出: [“i”,“love”] 解析: “i” 和 “love” 为出现次数最多的两个单词,均为2次。注意,按字母顺序 “i” 在 “love” 之前。示例 2:输入: [“the”, “day”, “i原创 2021-05-20 11:30:48 · 245 阅读 · 0 评论 -
Leecode刷题笔记-剑指offer20.表示数值的字符串【java】
1.题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。2.思路与解法### 解题思路对于字符匹配,正则表达式不失为一种合适的解决方案,对于题目中要求的对是否是数字的判断,我们按符号出现的位置顺序对其进行分解。1.空格 空格是较为容易被忽视的字符,case中存在“ 1”,“1 ”原创 2020-09-02 15:09:22 · 123 阅读 · 0 评论 -
Leecode刷题笔记268-缺失的数字【Java】
1.题目描述给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1] 输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1] 输出: 82.思路与解法2.1 简单求和因给定的数组中的数据是0 - n中缺少了一个数字,其他数字都在,那么求和后与正常不缺该数字的和值对比,相减求其绝对值即可。时间复杂度为求和的复杂度,即O(n).public int missingNumber(int[] n原创 2020-07-18 23:34:32 · 254 阅读 · 0 评论 -
Leecode刷题笔记283-移动零【Java】
1.题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12] 输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。2.思路与解法第一次循环,查找非0值,并将其按顺序赋值给数组的前部分;第二次循环,将数组后部分值赋值为0.维护一个初值为0的变量index,查找到非0值时,index + 1,这样第一次循环完成后,index的值为非0值的个数。第二次循环时,从i原创 2020-07-18 23:06:58 · 108 阅读 · 0 评论 -
Leecode刷题笔记58-最后一个单词的长度
最后一个单词的长度1.题目描述给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。2.思路与解法从字符串的尾部开始找起,遇到第一个空格就返回即可。(尾部的空格不算,需要特殊处理),时间复杂度最坏为O(n). 提交记录为0ms,击败100%。 public int lengthOfLastWor原创 2020-06-18 22:09:06 · 202 阅读 · 0 评论 -
Leecode刷题笔记20-有效的括号【Java】
有效的括号1.题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输出: false示例 5:输入: "{[]}"输出: true原创 2020-06-18 21:10:23 · 125 阅读 · 0 评论 -
Leecode刷题笔记35-搜索插入位置【Java】
搜索插入位置1.题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 12.思路与解法这是一道简单的搜索题,最直接想到的,暴力枚举法如下,时间复杂度为O(n) public int searchInsert(int[] nums, int target) { if原创 2020-06-18 20:55:47 · 152 阅读 · 0 评论 -
Leecode刷题日记198-打家劫舍【Java】
打家劫舍1.问题描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。原创 2020-06-08 20:59:36 · 313 阅读 · 0 评论 -
Leecode刷题日记7-反转整数【Java】
整数反转1.题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。2.思路反转数字,首先需要获得每一位上的数字,对10取模即可,然后倒过来拼成一个新的数字。由于不清楚数据的长度,开一个32位的数组来存储它的每一位数字,肯定是足够。题中还要求做反转后的数字的越界判断,可使用Integer里面的最大值和最小值常量数据进行判断。时间原创 2020-06-08 12:28:12 · 355 阅读 · 0 评论 -
Leecode刷题日记3-最长字串【Java】
1.题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。2.思路遍历字符串,并将遍历到的字符串和之前的字符作为一个临时字串,如果遍历到的新的字符被包含在这个临时字串中,说明跟前面的重复了,那么就丢掉临时字串中重复字符及其左边的部分。如示例中,当遍历到 第二个‘a’时,与第一个字符也就是’a’重复,那么丢掉’a’,并加上新加入的’a’,此时临时串为 “bca”,长原创 2020-06-08 12:19:50 · 160 阅读 · 0 评论 -
Leecode刷题日记9-回文数【Java】
回文数1.题目描述 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。2.思路 需要考虑负数的情况,因为负数的符号也需要反转。 2.1 考虑使用字符串反转,先转为字符串,再反转,对比是否是同一个字符串。 2.2 参考第7题网上的解法,先将数字反转再判断即可。秒啊,简化到没有一句废话代码。3.解法 对应于思原创 2020-06-08 10:54:46 · 233 阅读 · 0 评论 -
Leecode刷题日记1-两数之和【Java】
两数之和1.题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]2.思路2.1.暴力法,时间复杂度为 0(n^2)从第一个数字开始,依次与后续数组求和,查看是否与目标值相等原创 2020-06-08 10:50:50 · 131 阅读 · 0 评论 -
Leecode刷题日记13-罗马数转整数【java】
1.题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + I原创 2020-06-08 10:37:51 · 122 阅读 · 0 评论