![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
flyyyya
这个作者很懒,什么都没留下…
展开
-
【算法训练营】(day12)
算法训练营不要二把字符串转换成整数不要二解题思路:本质是在二维数组中每个坐标去放蛋糕,一个坐标位置放了蛋糕,跟他欧几里得距离为2的位置不能放蛋糕,如果(x1,y1)放了蛋糕,则满足((x1-x2)(x1-x2)+(y1-y2)(y1-y2))==4的(x2,y2)不能放蛋糕。可以用加法表达式分解最后得知两个表达式一个等于0,一个等于4时表达式成立。int main(){ int w, h, count = 0; cin >> w >> h; vector<ve原创 2021-10-27 18:58:03 · 130 阅读 · 2 评论 -
【算法训练营】(day11)
算法训练营统计回文连续最大和统计回文解题思路:遍历str1,将str2插入str1的每个位置,判断是否回文,是就++count;需要注意的是这里不能直接用str1,这样的话str1就改变了,判断下一个位置就不对了。bool reverse(string s){ int begin = 0; int end = s.size() - 1; while (begin < end) { if (s[begin] != s[end]) { return false; }原创 2021-10-25 22:31:16 · 156 阅读 · 4 评论 -
【算法训练营】(day10)
算法训练营计算糖果进制间的转换计算糖果解题思路:这道题的主要思路是判断三元一次方程组是否有解以及求解。如果B1!=B2则表达式无解。#include<iostream>using namespace std;int main(){ int a, b, c, d; cin >> a >> b >> c >> d; int A = (a + 2) / 2; int B1 = (c - a) / 2; int B2 = (b +原创 2021-10-19 14:36:14 · 207 阅读 · 9 评论 -
【算法训练营】(day9)
算法训练营排序子序列排序子序列原创 2021-10-17 19:00:58 · 161 阅读 · 4 评论 -
算法训练营(day8)
算法训练营字符串中找到连续最长的数字串数组中出现次数超过一半的数字字符串中找到连续最长的数字串解题思路:遍历字符串,用cur去记录连续的数字串,如果遇到的不是数字字符,则表示一个连续的数字串结束了,则将数字串跟之前的数字串比较,如果更长,则更新更长的数字串更新到res。int main(){ string str, res, cur; cin >> str; for (int i = 0; i <= str.length(); i++) { if (str[i] &原创 2021-10-17 00:30:52 · 313 阅读 · 6 评论 -
【算法训练营】(day7)
算法训练营组队竞赛删除公共字符组队竞赛我们看这道题要想获得1,2,5,5,5,8中的水平最大值,分成两个队伍,一个队伍三个人,我们要取1,5,8和2,5,5按照下标是第5个和第3个。这个题的思路是贪心算法,关系是arr[arr.length-2*(i+1)]。#include<iostream>#include<algorithm>#include<vector>#include<string>using namespace std;int原创 2021-10-14 18:26:28 · 243 阅读 · 11 评论 -
TopK算法(堆的思想)
TopK问题输入数组arr,找出其中最大的k个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最大的4个数字是5、6、7、8。示例一:输入:arr = [3,2,1], k = 2输出:[3,2]或者[2,3]示例二:输入:arr = [0,1,2,1], k = 1输出:[2]解题思路:1.先把数组中前K个数据,建成大堆2.然后剩下的N-K个数,跟堆顶的数据比较,如果比堆顶的数据小,则替换堆顶的数据,调堆。3.最后堆里面的就是最小的K个数...原创 2021-10-07 08:20:15 · 330 阅读 · 11 评论 -
【算法训练营】(day6)
算法训练营核心考点:二进制计算(Day3)核心考点:链表,前后指针的使用,边界条件检测核心考点:二进制计算(Day3)解题思路:这道题比较简单,但我们这里介绍一种位运算法,可以减少无效操作。把一个整数减去1之后再和原来的整数做与运算,得到的结果相当于把整数的二进制表示中最右边的1变成0。class Solution {public: int NumberOf1(int n) { //从右开始 逐位归零 int count = 0; while(n原创 2021-09-15 10:38:05 · 253 阅读 · 11 评论 -
【算法训练营】(day5)
解题思路:计算出两个链表的长度,让长的链表先走差距步,相同的节点就是交点原创 2021-09-11 10:16:33 · 1450 阅读 · 20 评论 -
【算法训练营】(day4)
核心考点:链表操作,思维缜密程度链接: https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=13&tqId=11168&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking.解题思路:定义三个指针,整体右移,边移动,边翻转,保证不会断链,这里我们要注意分别只有一个节点,两个节点和多个节原创 2021-09-08 20:09:00 · 371 阅读 · 11 评论 -
【算法训练营】(day2)
核心考点: 数组使用,简单算法的设计思路一:排序,出现次数最多的数一定在中间,检测中间出现的数是否符合要求。class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { sort(numbers.begin(), numbers.end()); int target = numbers.size(); int count = 0; for (int i = 0; i < nu原创 2021-09-05 17:39:33 · 1086 阅读 · 11 评论 -
【算法训练营】(day1)
1. 核心考点:数组相关,特性观察,时间复杂度把握注意:1.查找的过程本质是排除的过程。2.一次排除一行或一列。3.从左上角或者右下角开始,可以一次排除一行或者一列int i = 0;int j = array[0].size()-1;while( i < array.size() && j >= 0){ if(target < array[i][j]){ //array[i][j]一定是当前行最大的,当前列最小的 //targe原创 2021-09-03 17:43:44 · 1326 阅读 · 10 评论