11 2022 档案

摘要:题目描述 有N个正整数,求这N个正整数两两之间的公共质因数之和。 输入说明 第1行:正整数N(N<100) 第2行: N个空格分隔的正整数(每个元素<10000) 输出说明 输出这N个正整数两两之间的公共质因数之和,结果对1000000007取模。 输入样例 4 4 6 8 9 输出样例 11 跟给 阅读全文
posted @ 2022-11-30 23:13 YaosGHC 阅读(23) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定两个字符串str1和str2(长度均<=10000),问字符串str2内每个字符是否能在字符串str1内找到。 输入说明 第1行输入字符串str1 第2行输入字符串str2 输出说明 若能找到,则输出‘Y’,否则输出‘N’ 输入样例 abdcdewrtde wbaqx 输出样例 YYY 阅读全文
posted @ 2022-11-29 22:19 YaosGHC 阅读(37) 评论(0) 推荐(0) 编辑
摘要:小明今天收了N个鸡蛋,每个鸡蛋各有重量,现在小明想找M个重量差距最小的鸡蛋摆成一盒出售,输出符合条件的最重一盒鸡蛋的总重量 输入说明:第一行,鸡蛋个数N(N<1000) 每盒个数M(M<N);第二行,N个鸡蛋重量(浮点) 输出说明:符合条件的最重一盒鸡蛋的总重量(保留2位小数) 输入样例:8 4 1 阅读全文
posted @ 2022-11-27 17:05 YaosGHC 阅读(47) 评论(0) 推荐(0) 编辑
摘要:之前有见到过,优先队列就是堆 但是不是很明白priority_queue这个STL容器究竟跟queue有什么区别? STL中的 priority_queue 通常是一个最大堆,这意味着在C++中,priority_queue 默认按照最大值的顺序返回元素。但你可以通过自定义比较函数来创建最小堆。 在 阅读全文
posted @ 2022-11-25 11:06 YaosGHC 阅读(33) 评论(0) 推荐(0) 编辑
摘要:居然是道困难题,与之相比,子序列只是道简单题 拆分成两个步骤: 维持滑动窗口 找出窗口中的最大值 那么能不能将这两个步骤统一呢? 考虑每次都是取走滑动窗口的第一个元素,新插入最后一个元素 如果取走元素不是最大元素,这个好说,maxNum = max(maxNum,newNum) 如果取走的就是max 阅读全文
posted @ 2022-11-23 11:57 YaosGHC 阅读(26) 评论(0) 推荐(0) 编辑
摘要:最大公因数=两数乘积/最大公倍数 于是两个问题变成了同一个问题,这边有三种方法: 1. 更相损减数 当两数相等,直接返回 否则,大数-小数,如果差==小数,返回,否则重复这一过程 出口情况是某一个数字等于1,则返回1 第一版 // 更相损减数实现 int maxCommonDivisor(int a 阅读全文
posted @ 2022-11-23 11:12 YaosGHC 阅读(224) 评论(0) 推荐(0) 编辑
摘要:某游戏公司设计了一个奖励活动,给N个用户(1≤N≤10^7)连续编号为1到N,依据用户的编号S发放奖励。 发放奖励规则为: 公司随机设定三个非零正整数x,y,z。 如果S同时是x、y的倍数,奖励2张卡片; 如果S同时是y、z的倍数,奖励4张卡片; 如果S同时是x、z的倍数,奖励8张卡片; 如果S同时 阅读全文
posted @ 2022-11-23 10:28 YaosGHC 阅读(69) 评论(0) 推荐(0) 编辑
摘要:某地大数据防疫平台记录了往来的所有防疫相关信息,包括 本地或外地人员、健康码颜色、接种疫苗情况、最近一次核酸结果、最近一次核酸检测时间等。 该地希望依据平台数据组织新一轮的疫苗接种,现有2针免疫的疫苗A和1针免疫的疫苗B。 对于本地人员,完全接种者不接种,部分接种者继续接种疫苗A,未接种者接种疫苗B 阅读全文
posted @ 2022-11-23 09:33 YaosGHC 阅读(79) 评论(0) 推荐(0) 编辑
摘要:某地大数据防疫平台记录了往来的所有防疫相关信息,包括 本地或外地人员、健康码颜色、接种疫苗情况、最近一次核酸结果、最近一次核酸检测时间等。 该地某区域对于进入人员的要求为: 如果是本地人员,需要绿码和疫苗完全接种方可进入; 如果是外地人员,需要绿码、疫苗完全接种和近2天核酸检测阴性结果。 请设计程序 阅读全文
posted @ 2022-11-23 09:23 YaosGHC 阅读(64) 评论(0) 推荐(0) 编辑
摘要:从大于等于N的正整数里找到一个最小的数M,使之满足:M和M的逆序数(如1230的逆序数为321)的差的绝对值为一个[100000,200000]区间内的值。 输入说明:起始数字N; 输出说明:找到的第一个符合条件的数,如果没有符合条件的数,输出F。 输入样例:123456 输出样例:123462 p 阅读全文
posted @ 2022-11-22 22:55 YaosGHC 阅读(109) 评论(0) 推荐(0) 编辑
摘要:前缀树模板题? 直接看题解,明明是前缀树标签,却只给了动态规划 前缀树 我试图用208前缀树的直接思路解决这个问题 class Trie { private: vector<Trie*> children; bool isEnd; public: Trie() :children(26), isEn 阅读全文
posted @ 2022-11-18 17:02 YaosGHC 阅读(23) 评论(0) 推荐(0) 编辑
摘要:异位词就是长度和组成字符和目标字符相同的字符串 第一想法是这样的 vector<int> findAnagrams(string s, string p) { int n1 = s.size(); int n2 = p.size(); for (int i = 0; i < n1 - n2; i++ 阅读全文
posted @ 2022-11-15 14:25 YaosGHC 阅读(30) 评论(0) 推荐(0) 编辑
摘要:刚做完字符串解码,说是和逆波兰表达式求值很像,都是栈操作 逆波兰式也知道,就是后缀表达式,但是要写一下子不一定写得出出来 评论有说这题应属easy,应该是因为把这段儿写出来了吧 int evalRPN(vector<string>& tokens) { vector<long> nums; int 阅读全文
posted @ 2022-11-15 11:11 YaosGHC 阅读(17) 评论(0) 推荐(0) 编辑
摘要:因为单字符也算是回文,所以至少有n个 然后感觉又是二维dp 感觉很像回溯解决排列组合问题 感觉难点在于还要判断是不是回文,虽然可以借助栈,但是每次都压栈弹栈肯定复杂度太大了 之前是不是也做到了什么回文题 我的想法就是要么回溯要么动态规划 这还有提示,中心拓展吗,我好像真才做了这样的题,也用的中心拓展 阅读全文
posted @ 2022-11-11 11:41 YaosGHC 阅读(24) 评论(0) 推荐(0) 编辑
摘要:你也可以先购买,然后在 同一天 出售 这句有什么意义?逻辑上说跟不买没区别,但是可能跟算法实现有关系感觉 很明显是动态规划,二维的吗? 单笔交易我们是这么做的: 维护一个最低购入价格,并计算每天最大获利=当前价格-最低购入 最后如果最大获利>0就直接返回,否则返回0 这个数组的最大值位置是不确定的, 阅读全文
posted @ 2022-11-11 09:53 YaosGHC 阅读(11) 评论(0) 推荐(0) 编辑
摘要:查了下,类型题大概有6道 题目描述: 可以多次买卖,但是每次只能执行一笔买卖 卖出后的第二天无法操作(买入) 求最大获利 买卖股票的原题是一次买入卖出,所以关键是找到最便宜的买入价格,这里很明显不太一样 不仅要考虑多笔,还要考虑每一次操作后的冷冻期对总利润带来的影响 我们先不考虑冷冻期,那么多笔买入 阅读全文
posted @ 2022-11-11 09:30 YaosGHC 阅读(25) 评论(0) 推荐(0) 编辑
摘要:字符编辑题,最麻烦 重点是这里包含了嵌套,感觉要用到栈,但是用栈怎么做到字符串跟打印数量绑定呢?…复合数据结构?或者两个栈? 遇到数字压数字栈,遇到'['开始接收字符串,在遇到'数字'或']'压字符串栈 数字就循环这一过程 ']'就弹一个栈 看题解确实是用两个栈,但是怎么写却很麻烦 string d 阅读全文
posted @ 2022-11-10 15:38 YaosGHC 阅读(35) 评论(0) 推荐(0) 编辑
摘要:官解的思路是这样的 假设数组元素总和为sum,其中添加“-”号的元素和为neg 那么target=添加+号的元素和-添加-号的元素和=(sum-neg)-neg=sum-2neg 移项可以得到:neg=(sum-target)/2 那么题目就变成了:从数组中挑元素,使其和为(sum-target)/ 阅读全文
posted @ 2022-11-10 15:19 YaosGHC 阅读(38) 评论(0) 推荐(0) 编辑
摘要:和为K的子数组… 首先子数组和子串一样,都是连续的 又是dp的感觉…好像又用不到dp 虽然不是dp的思路,但是感觉写出来跟dp很像 int subarraySum(vector<int>& nums, int k) { int count = 0,temp; for (int i = 0; i < 阅读全文
posted @ 2022-11-09 15:03 YaosGHC 阅读(13) 评论(0) 推荐(0) 编辑
摘要:一般来说二叉树是向下遍历的,这里要找公共祖先就要向上遍历 考虑到本身也可以是公共祖先的情况…没什么思路 但肯定跟遍历有关,而且或许涉及回溯 要么就需要额外的数据结构保存 好,题解的思路1是后序遍历 这里会不会出现树种有相同的节点? 可以把这个 if (root->val == p->val || r 阅读全文
posted @ 2022-11-09 14:16 YaosGHC 阅读(19) 评论(0) 推荐(0) 编辑
摘要:import java.io.*; import java.util.StringTokenizer; class Main { public static void main(String[] args) throws IOException { BufferedReader reader = n 阅读全文
posted @ 2022-11-09 11:03 YaosGHC 阅读(16) 评论(0) 推荐(0) 编辑
摘要:这里是不对的,因为需要保证中间没有两端,所以找到第一个首尾相同的就应该break if(chars[i]==chars[j]&&j-i>len){ startIndex=i; len=j-i; break; } 注意这里的写法,第一次遇到的时候需要给startindex初始化 if(chars[i] 阅读全文
posted @ 2022-11-09 10:41 YaosGHC 阅读(20) 评论(0) 推荐(0) 编辑
摘要:import java.io.*; import java.util.HashSet; import java.util.Set; import java.util.StringTokenizer; class Main { public static void main(String[] args 阅读全文
posted @ 2022-11-08 23:13 YaosGHC 阅读(15) 评论(0) 推荐(0) 编辑
摘要:找首位相同的最短字串 看作是找收尾相同的最短子串 这怕不是一个二维dp吧 设dp[i][j]表示以i字符开始,j字符结束的最长子串长度 最直接的,对于字符串中的每一个字符向后遍历一次,遇到的第一个相同的就是最短的 但我总感觉应该用动态规划来做 import java.io.*; import jav 阅读全文
posted @ 2022-11-08 21:51 YaosGHC 阅读(14) 评论(0) 推荐(0) 编辑
摘要:看题看半天看不懂,原来它这个包装数量是指能装的商品数量 啊,这个价格指的不是单个包装的价格,而是包装里包含商品的总价 100 80 200 150 意思是,第一种100个80块,第二种200个150块 有三种可能: 5 0:400-100=300 3 1:240+150-50=340 1 2:80+ 阅读全文
posted @ 2022-11-07 18:40 YaosGHC 阅读(19) 评论(0) 推荐(0) 编辑
摘要:这个题有点意思,是解一个二元一次方程,手算很简单,但是怎么用算法来解还真没想过,一下子好像也没什么思路 import java.util.*; import java.io.*; class Main{ public static void main(String[] args) throws IO 阅读全文
posted @ 2022-11-06 23:58 YaosGHC 阅读(19) 评论(0) 推荐(0) 编辑
摘要:3210-2020-初赛-Java-1-3 import java.util.*; import java.io.*; class Main{ static class Reader { static BufferedReader reader = new BufferedReader(new In 阅读全文
posted @ 2022-11-06 23:09 YaosGHC 阅读(24) 评论(0) 推荐(0) 编辑
摘要:是一道对字符串处理的题目 首先考虑怎么判断是数字还是字母 阅读全文
posted @ 2022-11-06 21:46 YaosGHC 阅读(10) 评论(0) 推荐(0) 编辑
摘要:题目题解是这么说的,定义一个二维dp数组 其中dp[i][j]表示以nums[i][j]为右下角的最大正方形 对于任意dp[i][j],如果dp[i][j]==0,那它必不可能组成正方形,所以置0 对于dp[i][j]==k,只有dp[i-1][j-1]、dp[i-1][j]、dp[i][j-1]都 阅读全文
posted @ 2022-11-06 15:20 YaosGHC 阅读(18) 评论(0) 推荐(0) 编辑
摘要:感觉是二维矩阵的DFS或是BFS 很久没做过这方面的题了 有右和下两个方向都可能比当前元素大,我的第一想法是每个节点递归地去判断右节点和下节点,但是这样怎么处理重叠的问题 我觉得可以先按照对角线找,然后再向右、下两个方向找 对角线查其实挺麻烦的,题解中的思路大概是从最后一行/最后一列的第一个元素向下 阅读全文
posted @ 2022-11-05 09:59 YaosGHC 阅读(17) 评论(0) 推荐(0) 编辑
摘要:要求时间复杂度O(N),也就是说一次遍历,然后不让用除法 也就是说不能拿总乘积挨个除 不能双重for循环 但是没限制空间复杂度 能不能比如一个数组 pre[i]表示截至截至i(包括)前i个元素的乘积和 next[i]表示从i开始到结尾的元素的乘积和 第三次遍历就可以利用上面的结果算出来了 这里的两个 阅读全文
posted @ 2022-11-04 16:11 YaosGHC 阅读(23) 评论(0) 推荐(0) 编辑
摘要:一眼和昨天做的,一个梳子最少能用几个完全平方数凑成不是神似? 不过这里不一样的是,这里真的是背包问题,完全背包 瞄一眼确实是凑完全平方数那种方法,其实不太理解哪里能算是背包了 有个麻烦点是怎么返回-1的情况 自己都不确定对居然能通过了 int coinChange(vector<int>& coin 阅读全文
posted @ 2022-11-04 13:43 YaosGHC 阅读(13) 评论(0) 推荐(0) 编辑
摘要:感觉跟《剑指Offer》-50-第一个只出现一次的字符,有点神似 数组中只有一个数组会重复(可能不止两次),找出这个数字 如果用set,这是非常简单的,比两数之和还简单,所以题目要求空间复杂度O(1) 如果排个序,这题也会比较简单,只要检查有没有相邻且相等的元素,所以题目要求不能修改数组 O(n^2 阅读全文
posted @ 2022-11-04 10:21 YaosGHC 阅读(31) 评论(0) 推荐(0) 编辑
摘要:有没有可能是个数学题 保证一定能通过若干个完全平方数凑整,再不济可以11111111… 我想到了动态规划的斐波那契数列,但似乎并不是一个线性dp… 瞄评论,瞄到了“背包”,那这里应该是一个完全背包 很明显n就是背包容量… 背包是限定容量情况下能放的最大价值… 物品应该是小于n的所有完全平方数 但是这 阅读全文
posted @ 2022-11-03 19:33 YaosGHC 阅读(21) 评论(0) 推荐(0) 编辑
摘要:对于dp[i], 如果nums[i-1]>0,dp[i-1]也>0,那就是dp[i-1]*nums[i-1] 如果<0,>0,那就是nums[i-1] 0,<0,那就是nums[i-1] <0,<0,那就是dp[i-1]*nums[i-1] 同样参考最大子数和,还需要一个额外变量来记录最大的… in 阅读全文
posted @ 2022-11-03 17:05 YaosGHC 阅读(20) 评论(0) 推荐(0) 编辑
摘要:ListNode* insertionSortList(ListNode* head) { // 待排节点需要和它前面的节点比较?单链表怎么比,单链表的反向遍历? // 只能从头开始找 // 还要手写链表的交换? if (!head->next) return head; ListNode* dum 阅读全文
posted @ 2022-11-02 13:55 YaosGHC 阅读(21) 评论(0) 推荐(0) 编辑
摘要:用两个栈来模拟队列,利用了一个栈倒叙一个栈正序的特点,注意压栈顺序也有改变 就是感觉写出来代码有些重复 vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int>> res; if (!pRoot) return res; // 阅读全文
posted @ 2022-11-02 10:18 YaosGHC 阅读(14) 评论(0) 推荐(0) 编辑
摘要:编程题1-奇偶链表 对于一个链表,按照 先访问偶数下标的节点再访问奇数下标的节点 重新排列 思路是:奇偶两个指针交替移动并改变指针指向,最后将偶指针的下一个指向保存的第一个奇节点,并把奇指针的下一个指向置空 ListNode* oddEvenList(ListNode* head) { // 如果长 阅读全文
posted @ 2022-11-02 09:33 YaosGHC 阅读(34) 评论(0) 推荐(0) 编辑
摘要:希尔排序是对插入排序的改进 基于以下两点性质: 插入排序对于几乎已经排好序的数据操作时,效率高 但插入排序一般来说都是低效的,因为插入排序每次只能将数据移动一位 定义增量gap,即序列被分成gap组 注意这里的分组元素==不是连续的== 盗个图 对每组分别进行直接插入排序,然后缩小增量 它减少了比较 阅读全文
posted @ 2022-11-02 09:08 YaosGHC 阅读(26) 评论(0) 推荐(0) 编辑
摘要:插入排序是基础简单,同时效率也不高的排序 void insertion_sort(vector<int>& nums) { int n = nums.size(); // 把第一个当作是有序序列,从第二个开始操作 for (int i = 1; i < n; i++) { int j = i; wh 阅读全文
posted @ 2022-11-01 18:25 YaosGHC 阅读(19) 评论(0) 推荐(0) 编辑

🚀
回顶
收起
点击右上角即可分享
微信分享提示