算法
qq_45227330
这个作者很懒,什么都没留下…
展开
-
蓝桥杯省赛 子串分值和 c++版
一维数组记忆化查询各子序列O(n2)#include <iostream>#include <cstring>using namespace std;int flag[26];int num;int main(){ string str; cin >> str; long long sum = 0; for(int i = 0; i < str.length(); ++i){ for(int j = i;原创 2020-10-17 20:25:20 · 1220 阅读 · 6 评论 -
two_sum, three_sum的排序和非排序做法及优化
two_sum就是判断在给定数组里有无两元素之和等于给定元素值,代码简单易懂先来看two_sum的two_sum#include <iostream>#include <unordered_map>#include <vector>using namespace std;/*Sum Find a pair of two elements in ...原创 2020-04-13 12:29:55 · 138 阅读 · 0 评论 -
求数组中第k大的数,优化解法
当k不是很大时可以直接进行遍历数组,用临时变量保存数据示例:求数组中第二大的数O(n)解法#include <iostream>using namespace std;int two_rank(int* arr, int len){ int min = 0; int two_min = 0; if(len < 2)return -1; f...原创 2020-04-10 15:01:28 · 127 阅读 · 0 评论 -
斐波那契数列--递归和非递归写法
很简单,直接代码#include <iostream>// 递归int Fibonacci(int n){ if(n == 0){ return 0; }else if(n == 1){ return 1; } return Fibonacci(n - 1) + Fibonacci(n - 2);}// 非递...原创 2020-04-10 11:09:50 · 195 阅读 · 0 评论 -
链表相关的算法
@[TOC] 和链表有关的算法基本操作节点结构typedef struct{ int val; Node* next;}Node;查找操作Node* search(int val){ Node* pNode = root; // 根结点 while(pNode != nullptr) if(pNode->val == val){...原创 2020-03-24 18:05:57 · 104 阅读 · 0 评论 -
c++用数组实现队列
队列(queue) 的特点:先进先出数组实现:array: 存放元素i: 下一个入队存放元素位置的下标j: 下一个出队删除元素位置的下表size: 队列的最大长度num: 队列中当前元素个数#include <iostream>using namespace std;template<typename T>class queue{ public...原创 2020-03-23 22:29:17 · 1720 阅读 · 1 评论 -
[编程题]微信红包 -- c++实现
春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。若没有金额超过总数的一半,返回0。测试样例:[1,2,3,2,2],5返回:2题目很容易理解,排序后遍历统计次数即可#includ...原创 2020-03-22 12:22:28 · 783 阅读 · 0 评论 -
生成格雷码--c++实现
题目描述在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。给定一个整数n,请返回n位的格雷码,顺序为从0开始。测试样例:1返回:[“0”,“1”]分析1、n=1时,返回0,12、n=2时,返回00,01,10,113、n=3时,返回000,001,010,011,100,101...原创 2020-03-22 11:44:45 · 1130 阅读 · 1 评论