
算法
memjyh
这个作者很懒,什么都没留下…
展开
-
进制转化编程题
题一:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。使用短路求值原理。expression1 || expression2,或的短路。expression1为真时,则全部为真,expression2不再计算。expression1 && expression2,逻辑与的短路。expr...原创 2020-02-05 23:17:04 · 262 阅读 · 0 评论 -
和为S的连续正数序列:滑动窗口
编程题:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序。一开始只想到了最粗暴的穷举解法:因为S/2后,数字相加一定大于S,所以循环只到S/2为止:public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) { ArrayList&l...原创 2020-02-04 22:17:57 · 109 阅读 · 0 评论 -
二叉树的遍历
二叉树的遍历深度遍历广度遍历(层次遍历)这种遍历方式也就是一层一层遍历。上图遍历为ABCDEFG。使用队列的数据结构帮助遍历,先将根结点加入队列。只要队列不空,就将队列的首个元素弹出。再将该元素的左右结点加入队列。这样就实现了按照层次顺序加入队列。例如:首先将A加入队列,此时队列:A;然后将A弹出,把A的左右结点B和C加入队列,此时队列:BC;紧接着将B弹出,把B的左右结点D...原创 2019-11-07 21:26:21 · 305 阅读 · 0 评论 -
双指针法去除重复数字整理
之前做题时也遇到过双指针解法,比如:需要多层循环嵌套时,可以采用双指针法来减少复杂度。得到链表倒数第n个元素时,可以使用快慢指针优化算法,只要快指针比慢指针快n就可以。最近做了几道去除数组或链表中重复数字的题目,包括去掉所有重复数字,每个重复数字保留一个,每个重复数字保留两个等等。LeetCode26: Remove Duplicates from Sorted ArrayLeetC...原创 2019-10-24 20:37:09 · 849 阅读 · 0 评论 -
Leetcode415:Add Strings和Leetcode43: Multiply Strings
Leetcode415:Add Strings题目描述:Add Strings字符串相加StringBuilder的使用解题过程不仅仅是简单的加法运算,题目要求中说明字符串长度<5100,比模拟人工加法多了字符串的处理,同时类似于大数运算。 public String addStrings(String num1, String num2) { if (num1....原创 2019-10-14 12:10:17 · 196 阅读 · 1 评论 -
Leetcode18:4Sum
Leetcode18:4Sum题目描述:4Sum简而言之,找出数组中和为指定值的四个数,且不能有重复。双指针解题过程其实此题之前还有三数和,与指定值最相近的三数和,这两题大同小异。这一四数和,其实也差不多,有了前面题目的铺垫,第一想法就是用双指针的方法。自己的想法是,设定了两个双指针,初始为l1=0,r1=nums.length-1; l2=l1+1,r2=r1-1;然后先进行内部双指...原创 2019-10-10 21:33:09 · 100 阅读 · 0 评论 -
Leetcode62和Leetcode63:Unique Paths
Leetcode62:Unique PathsLeetcode63:Unique Paths II题目描述:Unique Paths简而言之,只能朝右走或朝下走,计算网格中从左上角走到右下角一共有多少种走法。题目描述:Unique Paths II简而言之,只能朝右走或朝下走,这次网格离可能会布置一些障碍,此时网格中从左上角走到右下角一共有多少种走法。采用动态规划解题过程Uniqu...原创 2019-09-25 21:05:31 · 129 阅读 · 0 评论 -
Leetcode15:3Sum
Leetcode15:3Sum题目描述:3Sum简而言之,找出数组中和为0的三个数,且不能有重复。可以使用双指针的方法降低多重循环的时间复杂度。解题过程最简单的方法自然是暴力循环,先确定一个再确定后两个。但是该方法复杂度太高,而且无法通过,时间超过限制。public List<List<Integer>> threeSum(int[] nums) { ...原创 2019-09-25 12:16:48 · 166 阅读 · 1 评论 -
Leetcode12:Integer to Roman
Leetcode12:Integer to Roman原创 2019-09-24 16:08:00 · 124 阅读 · 0 评论 -
Leetcode11:Container With Most Water
Leetcode11 Container With Most WaterContainer With Most WaterThe above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container ...原创 2019-09-22 15:47:11 · 127 阅读 · 0 评论 -
LeetCode 3:Longest Substring Without Repeating Characters
滑动窗口方法滑动窗口例题滑动窗口滑动窗口是数组/字符串问题中常用的抽象概念。 窗口通常是在数组/字符串中由开始和结束索引定义的一系列元素的集合。例题LeetCode 3:无重复字符的最长子串使用 HashSet 作为滑动窗口, 将字符存储在当前窗口 [i, j)最初 j = i)中。 然后我们向右侧滑动索引 j,如果它不在 HashSet 中,也就是当前窗口没有重复字符时,继续滑动 ,也...原创 2019-09-18 11:49:24 · 175 阅读 · 0 评论