
算法题
算法题
Rocky Ding*
全网同名Rocky Ding,AIGCmagic社区创始人,自媒体WeThinkIn主理人,AIGC算法专家,持续分享AI行业前沿资讯、干货经验以及深度思考,欢迎社招/校招/实习面试咨询。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法题_反序数字
思路:题目的要求是要我们原地反转数字。接下来我们用C++进行编程:class Solution {public: string reverseWords(string s) { // 反转整个字符串 reverse(s.begin(), s.end()); int n = s.size(); int idx = 0; for (int start = 0; start < n; ++start) { .原创 2020-10-05 14:44:23 · 458 阅读 · 0 评论 -
算法题_魔方比赛
思路:01背包问题。接下来我们用C++进行编程:#include <iostream>#include<string>#include<vector>#include <sstream>#include<algorithm>using namespace std;int main(){ int n; cin >> n; vector<int> score(n + 1); ..原创 2020-10-05 13:41:20 · 424 阅读 · 0 评论 -
算法题_多多的背包问题
思路:01背包问题。接下来我们用C++进行编程:#include<bits/stdc++.h>using namespace std;const int maxn=410;int c[maxn],v[maxn],ans;int dp[40010];int main(){ int N,M; scanf("%d%d",&N,&M); for(int i=1;i<=N;i++){ scanf("%d%d",&c...原创 2020-10-05 10:02:11 · 318 阅读 · 0 评论 -
算法题_面试官数量
接下来我们用C++进行编程:#include<iostream>#include<algorithm>using namespace std;#define N 101int arr[N];int dep[N]; int findMinReviewers(int arr[], int dep[], int n){ // Sort arrival and departure arrays sort(arr, arr+n); sort(dep, d..原创 2020-10-04 21:48:18 · 1310 阅读 · 0 评论 -
算法题_圆圈中最后剩下的幸运儿
思路:底层逻辑是约瑟夫环问题。接下来我们用C++进行编程:#include <bits/stdc++.h>using namespace std;#define LL long long int lastRemaining(int n, int m) { int f = 0; for(int i = 2; i <= n; i++) f = (f + m) % i; return f; }..原创 2020-10-02 22:10:44 · 283 阅读 · 0 评论 -
算法题_连续语音信号的最大和
思路:这道题的底层逻辑是最大子序和。接下来我们用C++进行编程:#include <bits/stdc++.h>using namespace std;#define LL long long int maxSubArray(vector<int>& nums) { if(nums.size() == 0) return 0; if(nums.size() == 1) ret..原创 2020-10-02 21:16:25 · 231 阅读 · 0 评论 -
算法题_二维数组的螺旋排序
接下来我们用C++进行编程:#include<iostream>#include<vector>#include<algorithm>using namespace std;int main() { int M, N; while (cin >> M >> N) { vector<vector<int>>nums(M, vector<int>(N)); .原创 2020-10-02 14:47:30 · 525 阅读 · 0 评论 -
算法题_区间不同数字计数
接下来我们用Python进行编程:#coding=utf8num = list(map(int, input().strip().split()))N,Q = num[0], num[1]list_a = list(map(int, input().strip().split()))output = []for i in range(Q): output.append(list(map(int, input().strip().split()))) number = out..原创 2020-10-01 00:59:13 · 417 阅读 · 0 评论 -
算法题_次次次小数字
接下来我们用C++进行编程:#include <iostream>#include <sstream>#include <string>#include<vector>using namespace std;#define LL long long vector<int> getLeastNumbers(vector<int>& arr, int k) { vector<int&g..原创 2020-09-30 23:06:28 · 202 阅读 · 0 评论 -
算法题_最短子数组之和
思路:我们可以使用滑动窗口法。接下来我们用C++进行编程:class Solution {public: /** * * @param s int整型 * @param nums int整型vector * @return int整型 */ int minSubArrayLen(int s, vector<int>& nums) { // write code here int.原创 2020-09-28 21:55:41 · 412 阅读 · 0 评论 -
算法题_逻辑回归梯度下降法
接下来我们用Python进行编程:## 通过梯度下降法,求解一元逻辑回归中的参数w# @param x float浮点型一维数组 # @param y float浮点型一维数组 # @return float浮点型#import mathclass Solution: def calc_weight(self , x , y ): # write code here def sigmoid(x): return 1/(1...原创 2020-09-28 20:54:30 · 711 阅读 · 0 评论 -
算法题_计算召回率
接下来我们用Python进行编程:import numpy as npy = input() #第一行数据y_p = input() #第二行数据y = [int(x) for x in y.split(",")]y_p = [int(x) for x in y_p.split(",")]result = 0.0'''计算结果放入result中,并打印出来即可print(result)'''n = len(y)count = 0sumcount = 0for i in ..原创 2020-09-28 20:48:14 · 716 阅读 · 0 评论 -
算法题_最长公共子序列
思路:我们可以用动态规划进行求解。接下来我们用C++进行编程:class Solution {public: int longestCommonSubsequence(string text1, string text2) { int length1 = text1.size(); int length2 = text2.size(); vector<vector<int>> dp(length1 +1, vector&.原创 2020-09-23 10:56:58 · 208 阅读 · 0 评论 -
算法题_最长公共子串
思路:我们可以使用动态规划的思想。我们可以开一个n*m的矩阵,dp[i][j]dp[i][j]dp[i][j] 用来记录A[:i]和B[:j]的最大公共子串。接下来我们用C++进行编程:class Solution{public: int LongestSubString(string A, int n, string B, int m) { if(n == 0 || m == 0) return 0; vector<vector<int>> dp(n, v.原创 2020-09-22 17:05:47 · 269 阅读 · 0 评论 -
算法题_字符串排序
接下来我们用Python进行编程:n=int(input())C=list(map(int,input().split()))test=[]for _ in range(n): test.append(input())res=float('inf')def dfs(cur,p,idx): global res if cur>res:return if idx==n: res=min(res,cur) else: t..原创 2020-09-21 16:43:47 · 263 阅读 · 0 评论 -
算法题_AOE
思路:贪心算法。只要够贪心,问题就能解决。将所有的点按照位置从左到右重排序,然后从左到右依次消灭(消灭的过程中也可攻击右边点,注意攻击的点不是怪物所在的位置x,而是每个怪物所在位置x加上攻击范围,这样保证刚好能将一定范围内攻击到)接下来我们用Python进行编程:nums = list(map(int, input().strip().split()))row = nums[0]y = nums[1]target = [[0] * 2 for _ in range(row)]for ..原创 2020-09-21 15:13:34 · 321 阅读 · 0 评论 -
算法题_简单计算器
思路:其中加减乘都是通常计算,而幂计算需要用到快速幂。接下来我们用Python进行编程:n = int(input())def add(a,b): return (a + b) % 1000000007def jian(a,b): return (a - b)def mi(a,b): if a == 0: return 0 res = 1 if b < 0: a,b = 1/a, -b while b: if b & 1: res = (re...原创 2020-09-21 10:43:42 · 548 阅读 · 0 评论 -
算法题_字符串最短循环子串
接下来我们用Python进行编程:a = input()index = (a + a).find(a,1)if index > 0: print(a[:index])else: print(a)原创 2020-09-21 10:37:16 · 986 阅读 · 1 评论 -
算法题_元素平衡
接下来我们用C++进行编程:#include <bits/stdc++.h>using namespace std;#define LL long longint main(){ LL A, B, C, D; cin >> A >> B >> C >> D; LL sum = A + B + C + D; LL avl = sum / 4; for(LL x = avl; x >= 0; x--) { LL l..原创 2020-09-18 00:05:57 · 732 阅读 · 0 评论 -
算法题_种草
接下来我们可以用C++进行编程:#include <bits/stdc++.h>using namespace std;int n, m, x;int main(){ cin >> n >> m >> x; priority_queue<int, vector<int>, greater<int>> q; //从小到大存储 while(n--) { int a; ..原创 2020-09-17 23:30:07 · 276 阅读 · 0 评论 -
算法题_Bob的旅行
思路:我们可以进行遍历寻找速度最快的航线。接下来我们用C++进行编程:#include <bits/stdc++.h>using namespace std;#define LL long longint main(){ LL N; cin >> N; vector<LL>T(N); vector<int> X(N); vector<int> Y(N); vector<int&g..原创 2020-09-17 22:45:01 · 224 阅读 · 0 评论 -
算法题_查询缺失的第一个正数
接下来我们用C++进行编程:class Solution {public: /** * * @param nums int整型一维数组 * @param numsLen int nums数组长度 * @return int整型 */ int firstMissingPositive(int* nums, int numsLen) { // write code here int n = numsLen.原创 2020-09-17 16:22:48 · 280 阅读 · 0 评论 -
算法题_二叉树遍历
思路:我们可以使用队列+广搜的方法完成。接下来我们用C++进行编程:/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */class Solution {public: /** * * @param node TreeNode类 * @return int整型vector<vector<>&g..原创 2020-09-17 15:22:58 · 275 阅读 · 0 评论 -
算法题_寻找最大连通区域
思路:深度搜索(dfs)。接下来我们用C++进行编程:class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 获取最大连通区域 * @param data int整型vector<vector<>> 二维数组 * @return int整型 */ int getMaxArea(vector<vector<int>..原创 2020-09-17 15:15:49 · 2415 阅读 · 0 评论 -
算法题_平衡子串替换
思路:双指针加滑动窗口。我们首先统计出每种字符出现次数,同时维护区间内每种字符的出现次数,二者做差可以得到区间外每种字符的出现次数。如果区间外每种字符的出现次数都小于等于n/4,则这个区间是合法的。接下来我们用C++进行编程:#include <bits/stdc++.h>using namespace std;#define LL long longbool check(vector<LL>& tot, vector<LL>& sum...原创 2020-09-14 11:01:29 · 237 阅读 · 0 评论 -
算法题_计算最大子矩阵
思路:计算矩阵中乘积最大的连续子序列问题,我们可以用动态规划求单个子问题,在映射到矩阵级别。接下来我们用C++进行编程:#include <bits/stdc++.h>using namespace std;#define LL long longint main(){ int M, N; cin >> M; cin >> N; vector<vector<int>> v(M, vector<..原创 2020-09-14 09:48:57 · 465 阅读 · 0 评论 -
算法题_选手分组
思路:使用动态规划求解。接下来我们用C++进行编程:#include <bits/stdc++.h>using namespace std;#define LL long longint main(){ LL N, M; cin >> N >> M; int mode = 1e9 + 3; vector<LL> temp; temp[0] = 1; temp[1] = 1; for(int i = 2; i <= N; i..原创 2020-09-13 18:53:46 · 328 阅读 · 0 评论 -
算法题_数字重排比大小
接下来我们用C++进行编程:#include<bits/stdc++.h>using namespace std;string A;string get_rest(vector<int>& nums){ string res_str = ""; for(int i = 0; i < 10; i++) { while(nums[i]--) res_str += char(i + '0'); } return res_str;}s..原创 2020-09-12 22:52:38 · 360 阅读 · 0 评论 -
算法题_实现36进制转10进制
思路:模拟36进制转换成10进制的逻辑。接下来我们用C++进行编程:#include <bits/stdc++.h>using namespace std;#define LL long longLL rToTen(string n, LL r);int main(){ string s; cin >> s; LL result = 0; LL length = s.size(); if(s[0] == '-') ...原创 2020-09-10 22:20:41 · 2146 阅读 · 0 评论 -
算法题_打印二叉树
思路:使用卡塔兰数进行计算:接下来我们用C++进行编程:#include <bits/stdc++.h>using namespace std;int main(){ int n; cin >> n; if(n == 0) { cout << 0 << endl; return 0; } long long C = 1; for (int i = 0; ...原创 2020-09-10 21:59:27 · 163 阅读 · 0 评论 -
算法题_多多的特征函数III
接下来我们用C++进行编程:#include <bits/stdc++.h>using namespace std;#define LL long longint main(){ LL N, M; vector<int> Y; cin >> N >> M; for(int i = 0; i < M; i++) { int temp; cin >> tem...原创 2020-09-10 16:49:46 · 180 阅读 · 0 评论 -
算法题_多多的野蛮六
思路:并查集。记下来我们用C++进行编程:#include<bits/stdc++.h>using namespace std;const int maxn=410;int mp[maxn][maxn],fa[maxn*maxn];int id[maxn][maxn],ans,num[maxn*maxn],cnt;int tfa[maxn];int dx[4]={1,-1,0,0};int dy[4]={0,0,1,-1};int find(int x){ i...原创 2020-09-10 15:30:28 · 202 阅读 · 0 评论 -
算法题_多多的n阶矩阵
思路:模拟遍历接下来我们用C++进行遍历:#include<bits/stdc++.h>using namespace std;int main(){ int n; cin >> n; for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(i == j || i + j == n + 1 || (n % 2 != 0 && (i == (n + ...原创 2020-09-10 15:09:52 · 266 阅读 · 0 评论 -
算法题_石头
思路:保持原序列中最大递增1的子序列(样例中3 4 5)不变,移动其他石头。那么只需求出最大递增1的子序列长度,再用总长度减去子序列长度,即为需移动数目。接下来我们用C++进行编程:#include <iostream>#include<vector>using namespace std ;int main(){ int n, num = 1, maxr = 1; cin >> n; vector<int>r(n);//创建长为n的数组..原创 2020-09-10 10:27:46 · 362 阅读 · 1 评论 -
算法题_拆迁分房子
思路:从左到右遍历,再从右到左遍历。接下来我们用C++进行编程:class Solution {public: /** * * @param person int整型一维数组 * @param personLen int person数组长度 * @return int整型 */ int house(int* person, int personLen) { // write code here ve..原创 2020-09-10 09:45:42 · 723 阅读 · 1 评论 -
算法题_遍历三角矩阵
思路:我们可以使用模拟的方法进行路径遍历。接下来我们用C++进行编程:class Solution {private: static constexpr int directions[3][2] = {{0, 1}, {1, 0}, {-1, -1}};public: vector<int> spiralOrder(vector<vector<int>>& matrix) { if (matrix.size() == 0..原创 2020-09-09 22:21:55 · 610 阅读 · 0 评论 -
算法题_最大子序列问题
思路:这是自大子序列和问题的扩展问题。接下来我们用C++进行编程:#include <iostream>using namespace std;int main(){ vector<int> numbers; int t; char c; while(cin >> t) { c = getchar(); c = getchar(); numbers.push_back(t); } int sum = 0; int start = .原创 2020-09-09 16:46:15 · 205 阅读 · 0 评论 -
算法题_定制栈结构
思路:我们可以用两个栈来实现。接下来我们用C++进行编程:class MinStack { stack<int> x_stack; stack<int> min_stack;public: /** initialize your data structure here. */ MinStack() { min_stack.push(INT_MAX); } void push(int x) { .原创 2020-09-09 16:02:10 · 133 阅读 · 0 评论 -
算法题_回文串
思路:动态规划。接下来我们用C++进行编程:#include <iostream>#include<string>#include<vector>using namespace std;int main(){ string s; cin >> s; int n = s.size(); vector<vector<int>> dp(n, vector<int>(n)); ..原创 2020-09-09 11:15:00 · 248 阅读 · 0 评论 -
算法题_大鱼吃小鱼
接下来我们用C++进行编程:struct P{ int x, t;};int main(){ int N; vector<int> A; cin >> N; for(int i = 0; i < N; i++) { int temp; cin >> temp; A.push_back(temp); } stack<P> S; ...原创 2020-09-09 00:11:41 · 1076 阅读 · 0 评论