算法
青石玄霄
吾生也有涯,而知也无涯
展开
-
两数之和
描述给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足index1 小于index2.。注意:下标是从1开始的假设给出的数组中只存在唯一解例如:给出的数组为 {20, 70, 110, 150},目标值为90输出 index1=1, index2=2输入:[3,2,4],6返回值:[2,3]说明:因为 2+4=6 ,而 2的下标为2 , 4的下标为3 ,又.原创 2021-06-03 23:53:46 · 96 阅读 · 0 评论 -
反转字符串
描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。输入:"abcd"返回值:"dcba"class Solution {public: /** * 反转字符串 * @param str string字符串 * @return string字符串 */ string solve(string str) { // write code here string newstr原创 2021-06-03 22:58:21 · 108 阅读 · 0 评论 -
最大公约数
描述求出两个数的最大公约数,如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。示例输入:3,6 返回值:3思路:假如输入8 ,128 / 12= 0 (余 8)12 / 8= 1(余4)8 / 4 = 216(余0)以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 12 和 8 的最大公约数 4。class S..原创 2021-06-03 22:08:42 · 156 阅读 · 0 评论 -
反转链表
初始化:3个指针1)pre指针指向已经反转好的链表的最后一个节点,最开始没有反转,所以指向nullptr2)cur指针指向待反转链表的第一个节点,最开始第一个节点待反转,所以指向head3)nex指针指向待反转链表的第二个节点,目的是保存链表,因为cur改变指向后,后面的链表则失效了,所以需要保存接下来,循环执行以下三个操作1)nex = cur->next, 保存作用2)cur->next = pre 未反转链表的第一个节点的下个指针指向已反转链表的最后一个节点3)pre = .原创 2021-06-03 21:51:59 · 80 阅读 · 0 评论 -
递归
使用递归的方式,求出斐波那契数 1,1,2,3,5,8,13......给你一个整数n,求出它的斐波那契数是多少?思路:当n==1 || n==2,返回1 当n>=2,返回前面两个数的和f(n-1)+f(n-2)代码:func fbn(n int) int{ if(n == 1 || n == 2){ return 1 }else{ return fbn(n - 1) + fbn(n - 2) }}...原创 2020-05-31 22:26:29 · 375 阅读 · 0 评论 -
求最小的k个数
给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组方法一:排序直接排序class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { vector<int> ret; if (k==0原创 2021-05-20 23:26:55 · 106 阅读 · 0 评论 -
用两个栈实现队列
static关键字的作用1. 全局静态变量在全局变量前加上关键字static,全局变量就定义成一个全局静态变量.静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。2. 局部静态变量在局部变量之前加上关键字static,局部变量就成为一个局部静态变量。内存中的位置:静态存储区初始化:未经初始化的全局静.原创 2021-05-07 21:30:43 · 80 阅读 · 0 评论 -
二分查找
二分查找的思路: 比如我们要查找的数是 findVal1. arr是一个有序数组,并且是从小到大排序2. 先找到 中间的下标 middle = (leftIndex + rightIndex) / 2, 然后让 中间下标的值和findVal进行比较2.1 如果 arr[middle] > findVal , 就应该向 leftIndex ---- (middle - 1)2.2 如果 arr[middle] < findVal , 就应该向 middel+1---- right...原创 2020-06-06 22:39:47 · 71 阅读 · 0 评论 -
排序
二分查找二分查找的思路: 比如我们要查找的数是 findVal1. arr是一个有序数组,并且是从小到大排序2. 先找到 中间的下标 middle = (leftIndex + rightIndex) / 2, 然后让 中间下标的值和findVal进行比较2.1 如果 arr[middle] > findVal , 就应该向 leftIndex ---- (middle - 1)2.2 如果 arr[middle] < findVal , 就应该向 middel+1...原创 2020-06-06 21:16:12 · 92 阅读 · 0 评论