每天一道算法题
隐匿hide
java和dota都会一点点
展开
-
盛最多水的容器
此题其实双for 暴力法是很容易得出答案的之所以写博客是要分析一下双指针问题最开始想双指针的觉得 这题双指针可行吗?答案是可行的 为什么呢我们把两个指针设为 L 和R那么容量就是sum = Math.min(nums[L],nums[R]) *(R-L)假设num[L] <num[R]那么以 L为边界的容器 容量最大值一定不大于 sum如果想通了上面的思路 那么就容易多了因为每次只需要移动指针小的那个我们就能拿到用所有位置当边界的最大值然后比较最大值就可以了 pu.原创 2020-05-19 10:39:26 · 120 阅读 · 0 评论 -
01 矩阵
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0示例 2:输入:0 0 00 1 01 1 1输出:0 0 00 1 01 2 1思路:输入数组为 a创建一个二维数组result储存每个元素到0的位置 准备返回创建队储存已经确定长度的位置遍历一遍输入 如果是0就在result对应位置写0 如果不是就写成int最.原创 2020-05-16 18:38:11 · 478 阅读 · 0 评论 -
Z字形变换
题;将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例:输入: s = “原创 2020-05-15 10:29:47 · 209 阅读 · 0 评论 -
最长回文子串
题:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”思路:从左到右 每次循环以当前位置为中心向两边扩散 在这里要注意一点 扩散情况需要判断两种 一种是以 aaaabaccccc为例的奇数长度一种是 aabbac为例的偶数长度 他们的中心点不同 public String lo原创 2020-05-13 10:13:10 · 107 阅读 · 0 评论 -
四数之和
题:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[[-1, 0, 0, 1],[-2, -1, 1, 2],[-2, 0, 0, 2]原创 2020-05-11 11:17:15 · 244 阅读 · 0 评论 -
Pow(x,n)
实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10 输出: 1024.00000示例 2:输入: 2.10000, 3 输出: 9.26100示例 3:输入: 2.00000, -2 输出: 0.25000 解释: 2-2 = 1/22 = 1/4 = 0.25思路:快速幂等x→x2→x4->x9->x19->x38->x77我们只需要知道每次得到的数字是前一次的二次方还是二次方*x从左到右可能很.原创 2020-05-09 10:39:40 · 137 阅读 · 0 评论 -
顺时针打印矩阵
题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字示例:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]思路: 把所有旋转内容拆分成四步 根据圈数和步数计算每次循环的大小内容更像是个体力活时间击败了97% 内存击败了100%代码: public int[] spiralOrder(int[...原创 2020-05-06 11:28:28 · 105 阅读 · 1 评论 -
三维形体的表面积
题在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。请你返回最终形体的表面积。 public int surfaceArea(int[][] grid) { int sum = 0; for(int i= 0;i<...原创 2020-04-30 12:09:52 · 154 阅读 · 0 评论 -
字符串的最大公因子
题:对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。示例输入:str1 = "ABCABC", str2 = "ABC"输出:"ABC思路 先判断两个字符是否能完美组合即 str1+str2 = str2 + str1;...原创 2020-04-29 09:50:24 · 84 阅读 · 0 评论 -
接雨水
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)示例输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6题解:暴力法思路 从第二个 到倒数第二个 每一个位置能接受的雨水数量是左...原创 2020-04-28 17:58:58 · 121 阅读 · 1 评论 -
无重复字符的最长子串
题:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度例子:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。我的解:public static int lengthOfLongestSubstring(String s) { Map<Character, Integer> map = n...原创 2020-04-26 00:28:38 · 91 阅读 · 0 评论 -
杨辉三角
题: 输入数字 返回数字层级的杨辉三角 class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> result = new ArrayList<>(); ...原创 2020-04-24 10:19:35 · 93 阅读 · 0 评论 -
位1的个数
题: 输入一个无符号整数 如1011111110001111 得到这个数字有多少个’1’如 输入 10101 返回3思路 : 循环32次 每次右移一位 判断个位数是否为1 累计个位数为1的次数代码实现:public int num(int i){ int count = 0; for(int j=0;j<32;j++){ count += ((i&a...原创 2020-04-23 09:43:47 · 129 阅读 · 0 评论 -
最大子序和
2019-10-25 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。class Solution { public int maxSubArray(int[] nums) {...原创 2019-10-25 10:10:01 · 93 阅读 · 0 评论 -
两数相加
两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...原创 2019-10-23 15:00:12 · 138 阅读 · 0 评论 -
两数之和
每天一道算法题 2019-10-23题目 两数之和给定一个整数数组nums和一个整数target 请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返...原创 2019-10-23 12:44:03 · 78 阅读 · 0 评论 -
最佳的买卖股票时间
题:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。最佳题解: public int maxProfit(int prices[]) { int minprice = Integer.MAX_VALUE; in...原创 2020-04-28 09:40:41 · 110 阅读 · 0 评论