- 博客(17)
- 收藏
- 关注
原创 算法学习之路:长度最小的子数组
给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。这题最简单快速的方法就是使用双指针方式解答,题目和思路都没啥难点,直接上代码package com.ucarinc.wtf.demo;/** * @Package: com.ucarinc.w...
2020-06-28 15:56:15
532
原创 算法学习之路:LRU和LFU的简单实现 V1
public class LRUcache<K,V> { HashMap<K,Node> table; Node<K,V> first,tail; static int defaultSize = 5; class Node<K,V>{ Node pre; Node next; K key; V val; Node(K key,V val){ .
2020-06-10 18:09:20
294
原创 算法学习之路:打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。来源:力扣(...
2020-05-29 14:27:25
223
原创 算法学习之路:验证回文字符串 Ⅱ
给定一个非空字符串s,最多删除一个字符。判断是否能成为回文字符串。示例 :输入: "abca"输出: True解释: 你可以删除c字符。该题主要就是运用双指针的方式,从头尾进行判断是否相等,若遇到不相等字符则左边或者右边去除一个字符然后重新判断剩下字符串是否是回文。public static boolean validPalindrome(String s) { int i = 0,j = s.length()-1; while(i < ..
2020-05-19 16:34:45
186
原创 算法学习之路:乘积最大子数组
给你一个整数数组nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。解题思想还是基于动态规划,只不过这次不仅要存储最大值,还要存储最小值用于负数的判断。1.需要两个整数max,min分别存储最大值,最小值2.当没有遇到负数时,max = min = nums[i]*nums[i-1]*.....nums[0]。3.当第i位为负数时,max = nums[i-1]*nums[i-2]*.....nums[0],min =nums[...
2020-05-18 11:11:36
453
原创 算法学习之路:只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-number一、性质其实这题不难,难点的地方是不使用额外的空间,只能对原数组进行操作,可以利用异或的性质实现。首先来看异或的性质: ...
2020-05-14 10:25:57
209
原创 算法学习之路:盛最多水的容器
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49...
2020-05-13 14:11:55
570
原创 算法学习之路:二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal...
2020-05-13 10:48:41
465
原创 算法学习之路:求x的n次方
实现 pow(x, n) ,即计算 x 的 n 次幂函数。1.暴力破解法2.快速幂法(利用幂的特性)public class MyPow { public static double myPow(double x, int n) { long N = n; if (N < 0){ N = -N; x = 1/x; } double ans = 1; fo
2020-05-11 11:34:24
1420
原创 算法学习之路:x的平方根
实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sqrtx题目很简单,主要学习解法: 1.暴力破解法,为了解决越界问题,这里用x/m代替m*mpublic static int mySqrt(int x) { ...
2020-05-09 11:05:36
246
原创 算法学习之路:寻找最大正方形
在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximal-square解题思路:1.暴力破解法: 寻找...
2020-05-08 17:03:55
1362
原创 算法学习之路:另一个树的子树
给定两个非空二叉树 s 和 t,检验s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subtree-of-another-tree题目不难,直接上解题过程:package com.uca...
2020-05-07 16:04:13
326
原创 算法学习之路:无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。解题思路:滑动窗口package com.ucarinc.wtf.demo;/** * @Package: com.ucarinc.wtf.demo * @ClassName: LengthOfLongestSubstring * @Author: tengfei.wu01@ucarinc.com * @Desc...
2020-05-06 17:47:37
306
原创 算法学习之路:最低票价
在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为days的数组给出。每一项是一个从1到365的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为costs[0] 美元;一张为期七天的通行证售价为costs[1] 美元;一张为期三十天的通行证售价为costs[2] 美元。通行证允许数天无限制的旅行。 例...
2020-05-06 16:36:19
524
原创 算法学习之路:字符串转整数
(LeetCode原题,题目也比较好理解就不过多解释,直接上题目+代码)首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也...
2020-04-03 17:26:01
100
原创 算法学习之路:计算有效字符串嵌套深度
这题是leetcode上昨天的一道算法题,算是争议性比较大的一道题因为题目比较难以理解, 原题如下:给你一个「有效括号字符串」 seq,请你将其分成两个不相交的有效括号字符串,A 和 B,并使这两个字符串的深度最小,前提:深度最小 这里我解释一下题目:输入一串只含有"("或")"的有效字符串,将其按最浅的嵌套深度转换成两个串,并用下标表示出他们所...
2020-04-03 14:21:32
494
原创 算法学习之路:去除字符串中的回文字段
前两天面试的时候,面试官出了一题很基础的算法题:给一串字符串,如何消除其中的回文。乍一看是很基础的算法题,不过我当时使用的暴力破解法的时间复杂度达到了O(n3),可以说是很烂的一个算法了(这里不再贴出代码,没什么意义)。之后到网上寻求了各种帮助,总结了两个基于栈的实现方法:一:返回无回文字段(包括清除后有可能存在的回文字段)public class PlalindromeA...
2020-04-01 16:48:02
527
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人