乘风破浪:LeetCode真题_004_Median of Two Sorted Arrays 一.前言 说到算法,最难的就是一些需要通过分析得到一些递推公式或者有用的结论,进而用来解决问题的方法了.这些东西一方面比较难以理解,另一方面都是有着严密的数学逻辑在里面的,并且需要通过程序来实现,无疑增加了求解的困难.就比如说这次的问题,在两个已经排好序的数组之中找到中间值.这里就涉及到两个数组总长度是奇数还是偶数,如何查找的问题了. 二.Median of Two Sorted Arrays 2.1…
Problem:There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)). 首先要知道什么是median,也就是我们所知的中位数,处于中间位置的数,很简单,如果长度为奇数,那么中位数就是中间的数,如,1,2,4,那么中位数就是2.如…
乘风破浪:LeetCode真题_034_Find First and Last Position of Element in Sorted Array 一.前言 这次我们还是要改造二分搜索,但是想法却有一点不一样. 二.Find First and Last Position of Element in Sorted Array 2.1 问题 2.2 分析与解决 查找问题,时间复杂度要求对数级别的,我们自然的想到了二分查找,和上一题一样,需求都是有点不一样的,这次是有重复的数字,找出某一特定的重…
乘风破浪:LeetCode真题_040_Combination Sum II 一.前言 这次和上次的区别是元素不能重复使用了,这也简单,每一次去掉使用过的元素即可. 二.Combination Sum II 2.1 问题 2.2 分析与解决 通过分析我们可以知道使用递归就可以解决问题,并且这次我们从头遍历一次就不会出现多次使用某一个元素了. class Solution { List<List<Integer>> ans; public List<List<Intege…
乘风破浪:LeetCode真题_039_Combination Sum 一.前言 这一道题又是集合上面的问题,可以重复使用数字,来求得几个数之和等于目标. 二.Combination Sum 2.1 问题 2.2 分析与解决 我们可以先将大于该数字的元素去除掉,之后取出一个元素,做减法,将得到的结果再放到集合中比较,直至最后减得结果为零则成功,为负数则失败回退.因此我们可以使用递归.堆栈.队列等来解决. public class Solution { public List<List<…