算法
文章平均质量分 64
想当厨子的程序媛
前期追深度,否则会华而不实,后期追广度,否则会坐井观天;
展开
-
【考研】东北大学二叉树相关算法(1)
中序遍历对二叉树线索化的递归算法void InThread(ThreadTree &P,ThreadTree &pre){ if(p!=null) { InThread(p->lchild,pre); if(lchild==null) { p->lchild=pre; p->lta原创 2017-01-06 22:25:02 · 5797 阅读 · 1 评论 -
String(2)——字符串的包含
“惟有编程、不断地编程,才能成为牛人。”题目描述给定一长字符串a和一短字符串b。请问,如何快速的判断出短字符串b中的所有字符是否都在长字符串a中?解法一:排序后轮训如果允许排序,可以考虑先排序后轮训。例如,可以先对这两个字符串中的字母进行排序,然后再对两个字符串一次轮询。常规情况下,两个字符串的排序需要O(mlog(m))+O(mlog(m))次操作,之后的线性扫描...原创 2019-02-01 16:54:06 · 283 阅读 · 0 评论 -
海量数据(2)——位图
一、什么是位图所谓位图,就是用一个位(bit)来标记某个元素对应的值,而键就是该元素。由于采用了位作为单位来存储数据,所以可以大大节省内存空间。二、举个栗子比如我们有数据模型{4,7,2,5,3},这里面最大值为 7 ,所以我们需要构造的位图数组的长度就是8(包含0),这个数组中包含元素:2,3,4,5,7,不包含的元素:0,1,6,所以:array[0] = 0,array[1] = 0...原创 2019-02-21 16:41:28 · 204 阅读 · 0 评论 -
排序(2)——冒泡排序
一、概述冒泡排序就是每一趟排序都将最大的一个数放在最后边。排序思路:依次比较相邻的两个数,将小的数放在前面大的数放在后面。所以第一趟比较结束后,数组中最大的数一定在数组的最后一个位置。二、举个栗子要排序数组: int[] arr ={6,3,8,2,9,1}三、时间复杂度最好的情况:如果我们的数据正序,只需要走一趟就可以完成排序,所需的比较次数和记录移动次数达到最小值。时间复杂度为...原创 2019-02-23 16:22:39 · 220 阅读 · 0 评论 -
排序(3)——快速排序
一、概述通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,已达到整个序列有序。1.1 算法描述快速排序使用分治法把一个数组分成两个数组。具体算法如下:【步骤一】从数组中挑出一个元素,称为“基准”(pivot)【步骤二】重新排序数组,所有元素比基准值小的放在基准的前面,所有元素比基准值大的放在基准后面。在这次循环退...原创 2019-02-23 19:35:26 · 170 阅读 · 0 评论 -
排序(1)——堆排序
排序有那么几种,从很早就开始接触,今天看了一下其他的算法题,有很多都用到了堆排序,想想之前自己的堆排序好像总有一点点含糊的地方,所以就赶紧看了看堆排序到底是怎么排序的咯~堆堆是一个完全二叉树,什么是完全二叉树?来看百度:一棵二叉树至多只有最下面的两层上的结点的度数可以小于2,并且最下层上的结点都集中在该层最左边的若干位置上,则此二叉树成为完全二叉树,并且最下层上的结点都集中在该层最左边的...原创 2019-02-18 20:22:04 · 350 阅读 · 0 评论 -
数组(1)——寻找最小的k个数
题目描述有 n 个整数,请找出其中最小的 k 个数,要求时间复杂度尽可能低。解法使用堆【步骤一】用容量为k的最大堆存储最先遍历到的k 个数,假设它们就是最小的k 个数,建堆的时候耗时:O(k),建好堆之后堆中的元素是有序的。【步骤二】遍历剩余的 n-k 个数。假设每次遍历到的新元素的值为 x,把 x 与堆顶元素 kmax 进行比较:如果 x < kmax, 用x 替换 kma...原创 2019-02-18 20:30:48 · 494 阅读 · 0 评论 -
String(1)——字符串的翻转
题目描述:给定一个字符串,要求将字符串前面的若干个字符移到字符串的末尾。例如,将字符串”abcdef“的3个字符‘a’、‘b’、’c’移动到字符串的尾部,那么原字符串将变成”defabc“。请写一个函数实现此功能解法一:蛮力移位将需要移动的字符一个一个的移动到字符串的尾部。使用两个方法,leftShiftOne是将头元素移动到字符串末尾,另一个是调用m次该方法leftShiftOne。...原创 2019-02-01 16:53:45 · 279 阅读 · 0 评论 -
Leetcode——724. Find Pivot Index
题目原址https://leetcode.com/problems/find-pivot-index/description/题目描述Given an array of integers nums, write a method that returns the “pivot” index of this array. We define the pivot index as th原创 2018-02-07 15:49:10 · 260 阅读 · 0 评论 -
【考研】东北大学二叉树相关算法(2)
编写一个算法,判断给定的二叉树是否是二叉排序树keyType predt=-32767;int JudgeBst(BiTree bt){ int b1,b2; if(bt==null) return null; else { b1=JudegeBst(bt->lchild); if(bt==0||predt>=bt-原创 2017-01-07 14:09:33 · 5844 阅读 · 5 评论 -
Leetcode——147. Insertion Sort List
题目描述 Sort a linked list using insertion sort. (升序)解题思路: 对于未排序的数据,在已经排序的数据中从前向后扫描,找到相应的位置并插入对应的元素。 用一个当前活动指针向后遍历第一个节点有可能被修改,因此要使用dummy。其下一个节点指向头结点,返回时返回dummy.next。当p的值不大于下一个节点的值时,就向下遍历:p原创 2018-01-30 21:35:45 · 152 阅读 · 0 评论 -
Leetcode——303.Range Sum Query - Immutable
题目难度easy题目描述解题思路给一个整形数组,返回下标从i到j的元素的和。 该题主要考察时间复杂度,题目本身的难度很低,要求使用尽可能少的时间来处理这个问题。解题思路 (1) 更改元素存储的值的信息:后一个元素存储前面所有元素的和(包含自己)。(2) 如果想要得到第i到第j个元素的和,只需要返回nums[j] - nums[i-1]即可。(3) 在第(2)步时原创 2018-02-06 20:23:31 · 198 阅读 · 0 评论 -
Leetcode——665. Non-decreasing Array
题目原址https://leetcode.com/problems/non-decreasing-array/description/题目难度easy题目TagArray题目描述Given an array with n integers, your task is to check if it could become non-decreasing by mo原创 2018-02-06 21:04:55 · 232 阅读 · 0 评论 -
Leetcode——448. Find All Numbers Disappeared in an Array
题目原址https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/description/题目描述Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and other原创 2018-02-06 21:55:37 · 230 阅读 · 0 评论 -
Leetcode——198. House Robber
题目原址https://leetcode.com/problems/house-robber/description/题目描述 You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the onl原创 2018-02-07 11:46:08 · 240 阅读 · 0 评论 -
Leetcode——697. Degree of an Array
题目原址https://leetcode.com/problems/degree-of-an-array/description/题目描述Example1: Input: [1, 2, 2, 3, 1] Output: 2 Explanation: The input array has a degree of 2 because both elements原创 2018-02-07 13:11:47 · 255 阅读 · 0 评论 -
Leetcode—— 283 141 628. Maximum Product of Three Numbers
题目原址https://leetcode.com/problems/maximum-product-of-three-numbers/description/题目描述Given an integer array, find three numbers whose product is maximum and output the maximum product.Example原创 2018-02-07 13:44:56 · 143 阅读 · 0 评论 -
Leetcode——268. Missing Number
题目原址https://leetcode.com/problems/missing-number/description/题目描述Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array.Example1原创 2018-02-07 14:24:01 · 201 阅读 · 0 评论 -
数组(2)——寻找和为定值的两个数
问题描述输入一个整数数组和一个整数,在数组中查找一对数,满足他们的和正好是输入的那个整数。如果有多对数的和等于输入的整数,输出任意一对即可。例如,如果输入数组int[] a = {1,2,4,5,7,11,15}; 和整数15,那么由于 4 + 11 = 15,因此输出 4 和 11。解法:排序夹逼法如果数组是无序的,可以考虑把数组排成有序的,数组变成有序的之后,便可以采用很多种方法来处理这...原创 2019-02-19 21:32:52 · 712 阅读 · 0 评论