leetcode
CodeHuba
这个作者很懒,什么都没留下…
展开
-
两数求和问题
问题 /** * Given an array of integers, find two numbers such that they add up to a specific target * number. * The function twoSum should return indices of the two numbers such that they add * up to the target, where index1 must be less than index2. Pl.原创 2022-04-20 20:30:55 · 331 阅读 · 0 评论 -
正则表达式匹配两种解法
问题 实现正则表达式匹配,支持“.”和“*”。 ‘.’:匹配任何单个字符。 ‘*’:匹配0个或多个前面的元素。 一些例子: isMatch(“aa”,“a”) return false isMatch(“aa”,“aa”) return true isMatch(“aaa”,“aa”) return false isMatch(“aa”, “a*”) return true isMatch(“aa”, “.*”) return true isMatch(“ab”, “.*”) return true ..原创 2022-02-15 11:36:03 · 930 阅读 · 0 评论 -
两个有序数组的中位数
问题 有两个大小分别为m和n的排序数组A和B。求两个排序数组的中位数。总体运行时时间复杂度应为O(log (m+n))。 解决方案 这个问题可以转化为求第k个元素的问题,k是(A的长度+B的长度)/ 2。 如果这两个数组中的任何一个为空,那么第k个元素就是非空数组的第k个元素。如果k == 0,第k个元素是A或B的第一个元素。 对于普通情况(所有其他情况),我们需要以数组长度一半的速度移动指针。 public static double findMedianSortedArrays(int A[]..原创 2022-02-14 15:41:07 · 163 阅读 · 0 评论 -
广度优先搜索法解决单词梯问题
问题 给定两个单词(开始和结束),在一个字典中,求从开始到结束的最短变换序列的长度,即: 每次只能更改一个字母每个中间单词必须存在于字典中,例如: 开始 = “hit” 结束 = “cog” 字典 = [“hot”,“dot”,“dog”,“lot”,“log”]。 因为一个最短的变换是“hit”->“hot”->“dot”->“dog”->“cog”,程序应该返回其长度为5。 注意:如果没有这样的转换序列,则返回0。所有的单词都有相同的长度。所有单词只包含小写字母字符。 这个..原创 2022-02-13 12:00:00 · 476 阅读 · 0 评论 -
单词分割匹配字典
问题 给定一个字符串s和一个单词字典dict,确定s是否可以被分割成一个或多个字典单词的空格分隔序列。例如,给定s =“leetcode”, dict = [“leet”, “code”]。返回true,因为"leetcode"可以被分割为“leet code”。 解决方案 1. 朴素方法 这个问题可以通过使用一种简单的方法来解决。讨论总是可以从这开始。 public static boolean wordBreak1(String s, Set<String> dict) { ..原创 2022-02-12 10:49:54 · 6875 阅读 · 0 评论 -
计算最长回文子串
问题 寻找最长回文子串是一个经典的面试编码问题。在这篇文章中,将为这个问题总结3种不同的解决方案。 解决方案 1. 朴素方法 我们可以简单地检查每个子字符串并检查它是否是回文的。时间复杂度为O(n3)。如果这是提交给LeetCode onlinejudge,将返回一个错误消息“时间限制超过”。因此,这种方法只是一个开始,我们需要一个更好的算法。 public static String longestPalindrome1(String s) { int maxPalinLengt..原创 2022-02-11 15:31:42 · 444 阅读 · 0 评论 -
计算逆波兰表达式
问题 计算逆波兰表示的算术表达式的值。有效的操作符是+,-,*,/。每个操作数可以是一个整数或另一个表达式。 例子: [“2”, “1”, “+”, “3”, “*”] -> ((2 + 1) * 3) -> 9 [“4”, “13”, “5”, “/”, “+”] -> (4 + (13 / 5)) -> 6 解决方案 1. 简单方法 这个问题很简单。理解了这个问题之后,我们应该很快意识到这个问题可以通过使用堆栈来解决。我们可以遍历给定数组中的每个元素。当它是一个数字时,..原创 2022-02-11 12:00:00 · 168 阅读 · 0 评论 -
旋转数组三种解法
问题 将一个有n个元素的数组向右旋转k步。例如,n= 7和k = 3,数组[1,2,3,4,5,6,7]被旋转到[5,6,7,1,2,3,4]。 你知道多少种不同的方法来解决这个问题吗? 解决方案 1.1 中间数组 我们可以直接创建一个新数组,然后将元素复制到新数组中。然后使用System.arraycopy()更改原来的数组。 public static void rotate1(int[] nums, int k) { // 取余 if (k > nums..原创 2022-02-10 21:23:07 · 338 阅读 · 0 评论