每日算法
ascto
努力
展开
-
直方图的水量,(三指针)
给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的直方图,在这种情况下,可以接 6 个单位的水(蓝色部分表示水)。class Solution { public int trap(int[] height) { int len = height.length; int left = 0, right = 1; // 左右区间指针转载 2021-03-31 15:45:24 · 144 阅读 · 0 评论 -
元素和为目标值的子矩阵数量
元素和为目标值的子矩阵数量给出矩阵 matrix 和目标值 target,返回元素总和等于目标值的非空子矩阵的数量。子矩阵 x1, y1, x2, y2 是满足 x1 <= x <= x2 且 y1 <= y <= y2 的所有单元 matrix[x][y] 的集合。如果 (x1, y1, x2, y2) 和 (x1’, y1’, x2’, y2’) 两个子矩阵中部分坐标不同(如:x1 != x1’),那么这两个子矩阵也不同。class Solution { publ原创 2021-03-28 21:33:01 · 701 阅读 · 0 评论 -
LC每日一题:最长回文子串
LC每日一题:最长回文子串题目:给你一个字符串 s,找到 s 中最长的回文子串。中心扩散法中心扩散法很好理解,我们遍历字符串的每一个字符,然后以当前字符为中心往两边扩散,查找最长的回文子串 。回文串的长度不一定都是奇数,也可能是偶数,比如字符串"abba",如果使用上面的方式判断肯定是不对的。我们来思考这样一个问题,如果是单个字符,我们可以认为他是回文子串,如果是多个字符,并且他们都是相同的,那么他们也是回文串。所以对于上面的问题,我们以当前字符为中心往两边扩散的时候,先要判断和他挨着的有没有相同的原创 2021-03-09 19:16:14 · 759 阅读 · 0 评论 -
LC每日一题:无重复字符的最长子串
无重复字符的最长子串题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。代码:class Solution { public int lengthOfLongestSubstring(String s) { if (s.length()==0) return 0; HashMap<Character, Integer> map = new HashMap<Character, Integer>(); in原创 2021-03-07 19:12:32 · 758 阅读 · 0 评论 -
LC每日一题:两数相加
两数相加题目:给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0开头。输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.class Solution{ public ListNode addTwoNumbers(ListNode l1,ListNode l2){原创 2021-03-06 11:24:13 · 825 阅读 · 1 评论 -
LC每日一题:两数之和
两数之和以前以暴力解法为荣,现在以暴力解法为耻。题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。import java.util.HashMap;import java.util.Map;class Solution{ public int[] twoSum(int[] nums,int target){ int len原创 2021-03-05 08:51:29 · 1432 阅读 · 1 评论