class Solution { public: void merge(vector& nums1, int m, vector& nums2, int n) { int r=m+n-1; int l1=m-1; int l2=n-1; while(l1>=0&&l2>=0&&r>=0){ if(n... ...
分类:
编程语言 时间:
2018-07-13 01:20:27
阅读次数:
169
链表(Linked list):是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。 使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随 ...
分类:
其他好文 时间:
2018-07-09 19:07:54
阅读次数:
145
给定两个有序数组,求其中位数的算法 中位数定义:如果元素个数为奇数,则中位数为数组中间的那个数;如果数组元素个数为偶数,则中位数为中间两个数的平均数 求解方法一(归并求解): ...
分类:
编程语言 时间:
2018-07-06 20:51:08
阅读次数:
209
方法一:举例法 先列举一些具体的例子,看能否发现其中的一般规则。 示例:给定一个具体时间,计算时针与分针之间的角度。 方法二:模式匹配法 将现有问题与相似问题作类比,看看内否通过修改相关问题的解法来解决新问题。 分析:这个问题和两个问题有点类似 1)在一个无序的数组中查找最小的元素 这个问题就是遍历 ...
分类:
编程语言 时间:
2018-07-05 18:28:21
阅读次数:
129
(1)归并排序: 归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。 ...
分类:
编程语言 时间:
2018-07-05 11:04:20
阅读次数:
176
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication8 { cl... ...
分类:
编程语言 时间:
2018-07-04 01:04:10
阅读次数:
156
一、什么是hashmap 在讨论哈希表之前,我们要先大概了解一下其他数据结构在新增、查找等基础操作执行性能 数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一对比给定关键字和数组元素,时间复杂度为O(n),当然对于有序数组,则可以 ...
分类:
其他好文 时间:
2018-07-01 16:21:59
阅读次数:
150
1、21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 2、88. 合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始 ...
分类:
其他好文 时间:
2018-06-26 23:06:19
阅读次数:
278
1、二分查找 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。 测试样例: 2 ...
分类:
其他好文 时间:
2018-06-24 23:41:18
阅读次数:
146
归并排序 归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。 归并排 ...
分类:
编程语言 时间:
2018-06-19 22:38:54
阅读次数:
124