初级算法
leedcode初级算法
beConcentration
这个作者很懒,什么都没留下…
展开
-
初级算法-最长公共前缀,初级算法-删除链表中的节点
至于分治法和二分法,感觉是可以练一练,不过要是真为了解这题,就算了。第二题删除链表中的节点。第一题最长公共前缀。原创 2022-07-19 09:22:55 · 164 阅读 · 1 评论 -
初级算法-外观数列
初级算法-外观数列原创 2022-07-05 10:51:39 · 114 阅读 · 0 评论 -
初级算法-实现 strStr()
初级算法-实现strStr()原创 2022-07-05 10:43:38 · 121 阅读 · 0 评论 -
初级算法-字符串转换整数 (atoi)
说实话这题让我深深的感觉到了自己写的代码的臃肿,在加了不知多少个判断之后,才通过。再记录一下官方的解法,官方引入了一个概念,叫自动机,也可以叫有限状态机,多是产品经理理业务逻辑用的,也可以是测试用的测试用例,这里盗个图,作为有限状态机示例。实际在业务逻辑相对复杂的开发中,也可以列一个这么个表,这样,首先代码不会过于臃肿,其次业务场景也不会有什么遗漏,毕竟你开发完了再自己测怎么都觉得没啥大问题。。。回到本题,通过题目,可以列出4个状态:初始状态,有正负标记,添加数值中,完成;而针对传入的字符串的字符原创 2022-06-15 20:16:36 · 87 阅读 · 0 评论 -
初级算法-验证回文串
双指针左右同时遍历比较,类似于快排的双边分治法,中间要跳过那些个没吊用的符号。代码如下:原创 2022-06-06 20:11:27 · 82 阅读 · 0 评论 -
初级算法-有效的字母异位词
本题利用计数排序的思想,创建一个计数数组,然后分别统计两个字符串字符计数,最后判断计数数组是不是相等/或者一个统计加一个统计减,判断计数数组是不是都设计0。代码如下: public boolean isAnagram(String s, String t) { if (s.length() != t.length()) { return false; } int[] count = new int[26]; ..原创 2022-05-25 20:05:53 · 49 阅读 · 0 评论 -
初级算法-字符串中的第一个唯一字符
借用计数排序的思想,构建计数数组,并将字符-'a’作为索引,最终重新遍历字符串看是不是1返回即可 public int firstUniqChar(String s) { int[] count = new int[26]; for (int i = 0; i < s.length(); i++) { count[s.charAt(i) - 'a']++; } for (int i = 0; i &l..原创 2022-05-19 19:32:17 · 59 阅读 · 0 评论 -
初级算法-整数反转
就按数字的方式处理,通过%10从x拿出来数字,再*10放入到原创 2022-05-19 19:03:50 · 59 阅读 · 0 评论 -
初级算法-反转字符串
这是个白给的题,直接互换就行了,互换次数为长度除2代码如下: public void reverseString(char[] s) { for (int i = 0; i < s.length / 2; i++) { char temp = s[i]; s[i] = s[s.length - 1 - i]; s[s.length - 1 - i] = temp; } }..原创 2022-05-07 09:32:57 · 169 阅读 · 0 评论 -
初级算法-旋转图像
就从外到里一圈圈的转就行了。。也就会个for循环。。代码如下: public void rotate(int[][] matrix) { int n = matrix.length; for (int i = 0; i < n / 2; i++) { for (int j = i; j < n - i - 1; j++) { int temp = matrix[i][j]; ..原创 2022-05-05 11:11:12 · 55 阅读 · 0 评论 -
初级算法-有效的数独
借用计数排序思想,构建3个计数二维数组分别是行、列和九宫的计数数组,如果大于0返回false。代码如下: public boolean isValidSudoku(char[][] board) { int[][] row = new int[9][9]; int[][] col = new int[9][9]; int[][] box = new int[9][9]; for (int i = 0; i < board...原创 2022-05-05 10:06:26 · 104 阅读 · 0 评论 -
初级算法-两数之和
有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。—鲁迅最简单的方法是暴力枚举,正可谓任题千变万化,我自n for走天下。 private static int[] twoSum(int[] nums, int target) { int length = nums.length; for (int i = 0; i < length; i++) { int num = target - nums[i];原创 2022-04-19 09:20:49 · 407 阅读 · 0 评论 -
初级算法-移动零
想到的思路是借用选择排序的一些思路设置一个指针,然后把后面不是0的数依次赋值到前面, 来,最后把剩下的数直接置0.代码如下: public void moveZeroes(int[] nums) { int i = 0; for (int j = 0; j < nums.length; j++) { if (nums[j] != 0) { nums[i++] = nums[j]; ..原创 2022-04-18 23:10:59 · 54 阅读 · 0 评论 -
初级算法-加一
先皮一波,来个奇葩解法就是把这个数组搞成字符串,用BigDecimal加一,然后再用split拆成数组,最后转成int数组。代码如下: public int[] plusOne(int[] digits) { StringBuilder s = new StringBuilder(); for (int digit : digits) { s.append(digit); } String[] bd = new..原创 2022-04-18 21:46:36 · 897 阅读 · 0 评论 -
初级算法-两个数组的交集 II
首先想到的解法是借用计数排序的思想,借助计数数组,拿到交集。代码如下: public int[] intersect(int[] nums1, int[] nums2) { // 交集,所以结果数组的长度肯定没最小长度大 int length = Math.min(nums1.length, nums2.length); int[] result = new int[length]; // 计数排序思路,先获取最大最小值 int ..原创 2022-04-18 21:11:52 · 162 阅读 · 0 评论 -
初级算法-只出现一次的数字
最先想到的解法是可以利用异或相等的数等于0的特性得到那个数。代码如下: public int singleNumber(int[] nums) { int result = 0; for (int num : nums) { result ^= num; } return result; }其次想到的解法可以利用HashSet的元素不可重复性,得到那个数。代码如下: public int s..原创 2022-04-17 19:20:11 · 61 阅读 · 0 评论 -
初级算法-存在重复元素
首先想到的是可以利用HashSet的不可重复特性进行判断。代码如下: public boolean containsDuplicate(int[] nums) { if (nums.length <= 1) { return false; } HashSet<Integer> set = new HashSet<>(); for (int num : nums) { ..原创 2022-04-17 19:08:49 · 92 阅读 · 0 评论 -
初级算法-旋转数组
解题思路:拿到题,原创 2022-04-17 18:50:24 · 453 阅读 · 0 评论 -
初级算法-买卖股票的最佳时机 II
解题思路:贪心算法:没啥很复杂的,贪心算法的思路就是每次取得局部最优解,从而得到全局最优解,不过可能这个全局最优解并不是最优的。。针对上面那道题,我们每次都把增长的取到,累加就可以得到最大利润。public int maxProfit(int[] prices) { int maxProfit = 0; for (int i = 1; i < prices.length; i++) { if (prices[i] > pric.原创 2022-04-11 18:06:44 · 81 阅读 · 0 评论 -
初级算法-删除排序数组中的重复项
题目描述:解题思路:套用快速排序单边循环法思想,记录第一个数的角标为tag,然后逐一进行比对,如果大于tag的值,则将tag+1的数和比对的数互换(同一个就别换了)。代码:class Solution { public int removeDuplicates(int[] nums) { int length = nums.length; if (length <= 1) { return length; }原创 2022-03-14 18:30:56 · 65 阅读 · 0 评论