![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
青石玄霄
吾生也有涯,而知也无涯
展开
-
两数之和
描述 给出一个整数数组,请在数组中找出两个加起来等于目标值的数, 你给出的函数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 · 109 阅读 · 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 · 120 阅读 · 0 评论 -
最大公约数
描述 求出两个数的最大公约数,如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。 示例 输入:3,6 返回值:3 思路: 假如输入8 ,12 8 / 12= 0 (余 8) 12 / 8= 1(余4) 8 / 4 = 216(余0) 以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 12 和 8 的最大公约数 4。 class S..原创 2021-06-03 22:08:42 · 183 阅读 · 0 评论 -
反转链表
初始化:3个指针 1)pre指针指向已经反转好的链表的最后一个节点,最开始没有反转,所以指向nullptr 2)cur指针指向待反转链表的第一个节点,最开始第一个节点待反转,所以指向head 3)nex指针指向待反转链表的第二个节点,目的是保存链表,因为cur改变指向后,后面的链表则失效了,所以需要保存 接下来,循环执行以下三个操作 1)nex = cur->next, 保存作用 2)cur->next = pre 未反转链表的第一个节点的下个指针指向已反转链表的最后一个节点 3)pre = .原创 2021-06-03 21:51:59 · 86 阅读 · 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 · 414 阅读 · 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 · 115 阅读 · 0 评论 -
用两个栈实现队列
static关键字的作用 1. 全局静态变量 在全局变量前加上关键字static,全局变量就定义成一个全局静态变量. 静态存储区,在整个程序运行期间一直存在。 初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化); 作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。 2. 局部静态变量 在局部变量之前加上关键字static,局部变量就成为一个局部静态变量。 内存中的位置:静态存储区 初始化:未经初始化的全局静.原创 2021-05-07 21:30:43 · 90 阅读 · 0 评论 -
二分查找
二分查找的思路: 比如我们要查找的数是 findVal 1. 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 · 82 阅读 · 0 评论 -
排序
二分查找 二分查找的思路: 比如我们要查找的数是 findVal 1. 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 · 104 阅读 · 0 评论