![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法基础
薯条可乐
一位不愿透露姓名的佘先生
展开
-
字符串中的第一个唯一字符-LeetCode
题目描述:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode"返回 0.s = "loveleetcode",返回 2.注意事项:您可以假定该字符串只包含小写字母。 首先看注意事项--假定字符串只包含小写字母,那么就好办了,因为字母一共才26个。好了,看思路:1)因为小写字母只有26个,...原创 2018-08-06 19:03:07 · 332 阅读 · 0 评论 -
数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路:典型的快速幂题目,将exponent次方降低,乘到base上来。例如求3^8,可以变换成(3*3)^(8/2)即9^4……81^2。如果exponent为奇数,如3^5,变换成3*3^4再求解。快速幂公式如下: while(y)...原创 2019-02-22 20:04:51 · 77 阅读 · 0 评论 -
用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路:stack1作为主栈,stack2作为辅助栈。每次队列push时,判断stack1是否空,是直接压入数据,否先将stack1的主句压进stack2中,再将进队数据压入stack1,最后把stack2中数据全部压回stack1中,这样就保证了最先进来的数据一定在栈顶,最后来的在栈底,模...原创 2019-02-22 16:24:07 · 367 阅读 · 0 评论 -
从尾到头打印链表
题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 思路1:借用栈,遍历链表,将链表的所有元素压入栈中,这样开始的元素在栈底,最后的元素在栈顶。再一个一个弹出,添加到res数组中。代码如下:class Solution {public: vector<int> printListFromTailToHead(ListNode* ...原创 2019-02-22 16:08:10 · 85 阅读 · 0 评论 -
替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路:计算空格数,计算新字符串长度,移动。1.从前移动:这样移动的后果,越往后的数字移动次数越多,不建议。2.从后移动:从最后一个字符开始判断,如果不为‘ ’(空格),直接将字符移动到新字符串末尾,如果是空格...原创 2019-02-22 15:32:24 · 84 阅读 · 1 评论 -
数组中出现次数超过一半的数字
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 首先第一种思路:暴力法,这个题暴力法很容易想到,双重循环,记录当前数出现的次数,如果次数大于N/2,直接返回就是了。代码实现如下:class Solution...原创 2019-02-22 14:03:11 · 115 阅读 · 0 评论 -
LEETCODE-至少是其他数字两倍的最大数
在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回-1。示例 1:输入: nums = [3, 6, 1, 0]输出: 1解释: 6是最大的整数, 对于数组中的其他整数,6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1. 示例 2:输入: nums...原创 2018-10-06 09:32:57 · 114 阅读 · 0 评论 -
汉明距离--LeetCode
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。 思路:思路比较简单,就...原创 2018-08-08 14:20:42 · 245 阅读 · 0 评论 -
有效的字母异位词--LeetCode
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。 思路:大致思路和求字符串中的第一个唯一字符相同。申请两个数组来存...原创 2018-08-06 19:38:21 · 123 阅读 · 0 评论 -
移动零-LeetCode
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 思路很简单:1)我们从数组末尾开始遍历,一直找到第一个为0的元素,固定下标,然后把后面的元素前移一位,末尾置0。2)继续遍历,找到第...原创 2018-08-06 19:21:57 · 176 阅读 · 0 评论 -
数组中只出现一次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。 思路:与找数组中一个出现一次的数相似,也是先做与运算。不过题目是要找两个出现一次的数字,所以我们要在原来的基础上再加一些东西。我们要用数组做与运算后的二进制数,并找到二进制中从右到左的第一个1出现的位置,以他为划分分割数组。将data[i]与出现的这个一做与,便得到了一组数,这组...原创 2019-02-23 21:08:04 · 95 阅读 · 0 评论