
数据结构与算法设计
罗伦
这个作者很懒,什么都没留下…
展开
-
判断字符串是否可由子串拼接而成
判断字符串是否可由子串拼接而成题目描述:输出最长子串,该子串首尾相连可以形成原字符串(笔试题)。Exp:输入:abcabcabc输出:abc否则输出 false#include<iostream>#include<string>using namespace std;int main(){ string s; cin >> s; int length...原创 2018-04-08 16:16:51 · 2298 阅读 · 5 评论 -
买卖股票问题
#include<iostream>#include<vector>#include<cmath>using namespace std;int maxres(vector<int>a){ int buy=-pow(2,31); int sell=0; int buy1=-pow(2,31); int se...原创 2018-07-09 11:06:35 · 848 阅读 · 0 评论 -
给定一个乱序数组a,找到所有两个和为target的数组下标index1,index2
给定一个乱序数组a,找到所有两个和为target的数组下标index1,index2使用hash_map,时间复杂度为o(n),空间复杂度为o(n).Exp:a{ 2, 3, 1, 4, 5, 6, 7 },target=6;输出:0 3 2 4#include <iostream>#include <vector>#include <...原创 2018-04-20 23:55:34 · 1127 阅读 · 0 评论 -
统计位数
统计位数统计n以内的正整数一共有多少位数字,不统计前导0.Exp: n=13,输出17,即1 2 3 4 5 6 7 8 9 10 11 12 13#include <iostream>#include <string>#include <iomanip>#include <algorithm>#include <vector>...原创 2018-04-20 21:38:07 · 441 阅读 · 0 评论 -
一个数组,求任一元素减去该元素右边任一元素的差值的最大值
求差值一个数组,求任一元素减去该元素右边任一元素的差值的最大值,暴力解法时间复杂度是o(n^2),下面通过动态规划的解法,时间复杂度为o(n)。#include<iostream>#include<vector>#include<string>using namespace std;int Maxchazhi(vector<int>a){...原创 2018-04-20 10:56:11 · 1161 阅读 · 0 评论 -
递归打印1到n位数
递归打印1到n位数Exp:#include<iostream>#include<string>using namespace std;void printNumber(string number){ bool isbegin0 = true; for (int i = 0; i < number.size(); i++){ if (isbegin0&a...原创 2018-04-19 17:05:11 · 572 阅读 · 0 评论 -
冒泡&&选择&&插入&&希尔&&堆排序&&归并&&快排
#include <iostream>#include <vector>using namespace std;//BulleSortvoid BubbleSort(vector<int>&Array){ bool flag = true; //a flag to record whether the swap does; for (in...原创 2018-04-07 10:59:56 · 440 阅读 · 2 评论 -
被3整除
被3 整除 这是一道牛客网上面的笔试题。 题目描述:小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。并且小Q对于能否被3整除这个性质很感兴趣。小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。 输入:包括两个整数l和r(1 <= l <= r <...原创 2018-03-28 14:58:02 · 557 阅读 · 1 评论 -
链表的回文结构,时间复杂度O(n),空间复杂度O(1)
链表的回文结构链表的回文结构,时间复杂度O(n),空间复杂度O(1)bool chkPalindrome(ListNode* head) { if (!head || !head->next) return true; ListNode *slow = head, *fast = head; while (fast->next &...原创 2018-04-10 15:29:33 · 1195 阅读 · 0 评论 -
将十进制数M转换为N进制数
将十进制数M转换为N进制数题目描述:给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数。Exp:输入:输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开,如7,2。输出:为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等),如111.#include<iostream>#includ...原创 2018-04-09 16:14:57 · 2573 阅读 · 0 评论 -
拆分数最大乘积
拆分数最大乘积题目描述,一个数拆分成n个整数相加,n1+n2+n3+......+nn,使得n1*n2*n3*......nn最大。Exp:输入:12输出:81#include<iostream>using namespace std;int main(){ int n,res,t; cin >> n; if (n == 1){ cout << ...原创 2018-04-08 16:25:06 · 1722 阅读 · 0 评论 -
合法括号对问题
合法括号对问题题目描述:输入一个正整数n,输出合法的括号对,此题目为LeetCode原题22题。(笔试题)Exp:输入:4输出: #include<iostream>#include<string>#include<vector>using namespace std;void Generate(int left, int right, ...原创 2018-04-08 16:21:43 · 458 阅读 · 0 评论 -
数组全排列
#include<iostream>#include<vector>using namespace std;void permu(vector<int>&a, int l, int h, vector<vector<int>>&res) { if (l == h) { res.push_back(a); ...原创 2018-08-05 17:45:39 · 970 阅读 · 0 评论