给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。 说明: 返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以 ...
分类:
编程语言 时间:
2020-05-11 23:21:11
阅读次数:
76
一、什么是归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(DivideandConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。二、图解先将无序数组分割,经过排序,将两个有序数组再拼接。三、原理归并排序的原理就是合并两个有序数组。合
分类:
编程语言 时间:
2020-05-11 23:19:11
阅读次数:
67
题目非常简单,之所以记录一下是因为总是忽略中序遍历的特性:排序二叉树中序遍历会得到一个有序数组。该特性很实用也很神奇,就像一颗满二叉排序树的根节点必然是对应有序数组的中点一样。该特性可以帮助我们更好的理解排序树的结构。 List<Integer> re=new LinkedList<Integer> ...
分类:
其他好文 时间:
2020-05-11 01:04:03
阅读次数:
56
leetcode 4.[寻找两个有序数组的中位数] [寻找两个有序数组的中位数]: https://leetcode cn.com/problems/median of two sorted arrays/ leetcode 9.[回文数] [回文数]: https://leetcode cn.co ...
分类:
其他好文 时间:
2020-05-10 19:28:15
阅读次数:
73
题目: 解答: lef和rig分别指向左右的数,比较并从最大位开始装。 1 class Solution { 2 public: 3 vector<int> sortedSquares(vector<int>& A) 4 { 5 int len = A.size(); 6 vector<int> a ...
分类:
编程语言 时间:
2020-05-04 19:50:58
阅读次数:
59
题目: 解答: 1 class Solution { 2 public: 3 vector<int> twoSum(vector<int>& numbers, int target) 4 { 5 int low = 0; 6 int high = numbers.size() - 1; 7 8 wh ...
分类:
编程语言 时间:
2020-05-04 17:27:43
阅读次数:
67
归并排序 归并排序算法的核心就是 “归并”,将两个有序的数列合并,形成更大的有序数组。 归并排序的原理 上面说了,归并排序的核心就是“归并”。如果排序一个数组,那么将数组从中间分成前后两部分,对前后两部分分别进行排序,然后再将排序好的合并在一起,那么这样整个数组就会成为更大的有序数组。例如下面示图: ...
分类:
编程语言 时间:
2020-04-30 19:04:57
阅读次数:
65
搜索长度未知的有序数组。题目给了一个数组和一个target数字,如果你能在input数组中找到target,就输出其index,否则return -1。例子, Example 1: Input: array = [-1,0,3,5,9,12], target = 9 Output: 4 Explan ...
分类:
其他好文 时间:
2020-04-29 10:54:54
阅读次数:
81
代码一: 1 class Solution(object): 2 def sortedSquares(self, A): 3 """ 4 :type A: List[int] 5 :rtype: List[int] 6 """ 7 ans=[] 8 for i in range(len(A)): 9 ...
分类:
编程语言 时间:
2020-04-29 10:50:17
阅读次数:
66
归并排序 归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。 ...
分类:
编程语言 时间:
2020-04-29 00:46:58
阅读次数:
74