- 博客(14)
- 收藏
- 关注
原创 剑指offer 面试题40 最小的k个数
思路:对数组排序,然后查找第k 个值class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { vector<int>res; if(k>input.size()) return res; if(k == input.size()) retu
2020-06-02 23:28:10
149
原创 剑指offer 面试题49 丑数
题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路每一个丑数乘以2,3,5的最小值得到下一个丑数。而且每个丑数乘以1次2,3,5 。如果第p2个丑数值乘以2 存在于已有的丑数序列,则对第p2+1个丑数乘以2 和第p3个丑数乘以3 第p5个丑数乘以5取最小值得到下一个丑数值。因此我们需要三个指针p2,p3,p3记录该位置的值是否与2,3,5进行相乘操作,
2020-06-02 23:23:49
159
1
原创 剑指offer 面试题36 二叉搜索树与双向链表
题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:递归地把转换成左右子树这两个问题解决之后再把转换后得到的左右链表和根节点连接起来。每一个子树返回该子树对应的链表的头和尾巴。然后将左子树的尾巴和根节点连接,右子树的头和root连接,同时返回此子树对应的头和尾巴(根据左右子树的情况,返回的头和尾巴有四种情况: case 1. 左子树的头和右子树的尾巴,case 2.是左子树的头和root,case 3. root和右子树的尾
2020-05-31 23:33:36
150
原创 剑指offer 面试题50 第一次只出现一个的字符
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)map数据结构的优点 ,可以实现0(1)复杂度的查找,因此本题用哈希表解决,时间复杂度为0(2N),空间复杂度为0(N)class Solution {public: int FirstNotRepeatingChar(string str) { map<char,int>temp;
2020-05-31 23:21:33
136
原创 剑指offer 11 题 剪绳子
题目描述给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。思路:首先剪出一个长为3 的绳子,然后剩余绳子长为length - 3,若k[length-3]<length-3,此时,不需要继续剪。借鉴斐波那契数列的原理class Solution {
2020-05-29 21:49:18
122
原创 剑指offer 的51题 数组中的逆序对
暴力解法 两个for循环,时间复杂度为n^2不满足要求考虑在归并排序过程中 ,左右两段合并时,只要左边的第i 个数大于右边的第j 个数,则,左边剩下的数也大于第j个数。代码很简单,原理可以参考LeetCode上面的视频讲解。class Solution {public: int InversePairs(vector<int> data) { int ret=0; MergeSort(data,0,data.size()-1,ret);
2020-05-29 21:15:32
183
原创 vs 2017 c++ 归并排序
VS 2017 归并排序代码思路是二分,然后组合。(对数组分段处理。)#include "pch.h"#include <iostream>#include <vector>using namespace std;void mergesort(vector<int>&array, int left, int right);void merge(vector<int>&array, int left, int right,
2020-05-29 21:11:08
132
原创 剑指offer 11题 旋转数组的最小数 c++
旋转数组的最小数题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解思路:1.排序后的第一个元素,这样时间复杂度取决于排序的时间复杂度sort()2.遍历,找到array[i]>array[i+1],即输出array[i+1]为所求最小值;最坏情况下,时间复
2020-05-23 00:11:08
178
原创 二进制补码和十进制数的转换
最近做的一个工程项目用到了基本的数据转换,代码实现了一遍,供大家和自己参考。先考虑如何将二进制补码转换为十进制整数:若符号位是0, 则该数是正数, 原码等同于补码. 可以由原码(也就是补码)得知代表的正整数.若符号为是1, 则该数一定是负数, 可按照以下方式转换: 方式一: 先把符号位去掉, 把剩下的非符号位取反后得到一个无符号位的二进制序列, 将该二进制序列转换为十进制整数(注...
2020-04-03 23:24:58
23103
1
原创 双精度浮点数的二进制和十进制的转换C++
功能函数,其中BYTE 为unsigned char型double B2D(BYTE *pData) { //double 型的格式8个字节 // S/E/M //-1/-----------11/------.....52/ //获取符号位,1表示负数,0表示正数; int sign = int(pData[0] >> 7); cout << "sign= ...
2020-04-03 19:18:20
2965
原创 查找重复数
题目描述:给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。(来源:LeetCode 链接:https://leetcode-cn.com/problems/find-the-duplicate-number)解法1 排序时间复杂度为nlog(n)对数组进行排序,用...
2019-12-23 19:58:51
262
原创 vs2017 + gdal win10配置
vs2017 + gdal win10配置自行下载并安装好vs2017或者更高的版本gdal 下载建议去官网下载gdal官网注意:gdal 和 vs 版本匹配gdal编译在下载并解压的文件夹下找到nmake.opt文件,用vs打开 修改对应的版本和Windows操作系统位数和编译完后的保存路径41行:MSVC_VER=191057行:GDAL_HOME = “D:\gd...
2019-12-23 14:15:34
296
原创 蚁群算法
基础算法及应用对本人研究生期间接触到的图像处理的相关算法进行汇总,方便后期查阅.1. 蚁群算法最近看了一篇图像配准的论文 “multi-modal continuous ant colony optimization for multi-sensor remote sensing image registration with local research”.于是乎,就看了一下蚁群算法。...
2019-12-23 13:51:32
205
原创 717. 1-bit and 2-bit Characters
717. 1-bit and 2-bit CharactersWe have two special characters. The first character can be represented by one bit 0. The second character can be represented by two bits (10 or 11).Now given a string ...
2019-11-13 20:31:13
106
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人