
算法
H_Expect
长风破浪会有时,直挂云帆济沧海。
展开
-
回朔法之机器人的运动范围
回溯法可以看成蛮力法的升级版,它从解决问题每一步的所有可能选项里系统地选择出一个可行的解决方案。回溯法非常适合由多个步骤组成的问题,并且每个步骤都有多个选项。当我们在某一步选择了其中一个选项时,就进入下一步,然后又面临新的选项。我们就这样重复选择,直至到达最终的状态。【注:蛮力法,也称为穷举法或枚举法,是一种简单直接地解决问题的方法,常常直接基于问题的描述,所以,蛮力法也是最容易应用的方法。但...原创 2019-07-07 23:46:03 · 218 阅读 · 0 评论 -
动态规划&贪婪算法之剪绳子
动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。1. 可以使用动态规划的情形:(1)在应用动态规划之前,要分析能否把大问题分解成小问题,分解后的小问题也存在最优解;如果把小问题的最优解组合起来能够得到整个问题的最优解,那么就可以应用动态规划解决这个问题。(2)如果是求一个问题的最优解(通常是求最大值或者最小值),而且该问题能...原创 2019-07-08 23:45:43 · 995 阅读 · 0 评论 -
位运算之二进制中1的个数
位运算是把数字用二进制表示之后,对每一位上0或1的运算。位运算有五种运算:与、或、异或、左移、右移。与、或、异或的运算规律 左移(<<) m << n 表示把 m 左移 n 位。在左移 n 位的时候,最左边的 n 位将被丢弃,同时在最右边补上 n 个0。例如:10001010 << 3 = 01010000右移(>>) ...原创 2019-07-09 23:09:27 · 343 阅读 · 0 评论 -
数值的整数次方
题目描述:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。解题思路:这个题要求类似于库函数pow的功能。1. 在编写代码前,首先需要考虑三种情况:(1)输入的指数大于0;(2)输入的指数等于0;(3)输入的指数小于0;在数学中,我们学过任何数的0次方都为1;任何数的1次方都为它本身。2. 考虑完可能出...原创 2019-07-30 19:36:22 · 177 阅读 · 0 评论 -
MD5算法实现原理
最近知道了一个加密算法,在校验文件、验证签名安全等很有用。整理一下关于MD5的相关知识。(我不是知识的创造者,我只是知识的搬运工╭(●`∀´●)╯)MD5消息摘要算法(MD5 Message-Digest Algorithm)是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维...原创 2019-08-08 23:04:48 · 1240 阅读 · 0 评论 -
合并两个排序的链表
问题描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。对于这个问题,可以有两种解法:一是递归实现,而是非递归实现。代码如下: //递归实现 ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(pHead1 == NULL) ...原创 2019-08-28 23:28:47 · 264 阅读 · 0 评论 -
数组中只出现一次的两个数字
题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。解题思路:(1)将整个数组的数字从头到尾异或,得到一个结果数字(2)找到结果数字二进制表示中最右边为1的位(3)根据(2)中找到的位置,判断数组中每个数字该位置是否为1,将数组分为两组,这样每组数字中都有一个只出现一次的数字(4)将分好的两组数字分别异或,最终各得到一个数字...原创 2019-09-22 20:17:49 · 360 阅读 · 0 评论 -
第一个只出现一次的字符
题目描述:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)。这道题在面试的时候被问到,当时只写出来时间复杂度为O(N^2)的代码,面试官说时间复杂度太大,让我优化一下,结果没有写出来最优代码。回来一翻剑指offer才发现是原题(面试题50),太后悔了,都怪自己没有好好看书!!...原创 2019-09-22 20:41:01 · 258 阅读 · 0 评论