菜鸡怼题
陈城南
这个作者很懒,什么都没留下…
展开
-
C++ 实现 maxpooling 计算
C++ implement Maxpooling输入参数:featmap, kernel_size (h, w), stride输出参数:featmap注意实现计算输出 feat 大小,难点: 如果 featmap 的大小(高/宽)无法整除 stride 时,则需要进行 padding;注意 pading 时的填充计算;h,w 不一定相等,stride h,w 也不一定相等;#include <iostream>#include <bits/stdc++.h>原创 2022-03-29 22:28:42 · 2080 阅读 · 0 评论 -
【 结构体传参 】 结构体值传递方式
/* 关于结构体的传值,为值传,即将结构体大小的字节复制一份进行传递。*/#include <stdio.h>typedef struct node{ int a; int b;}node;void changeNodeA(node nd){ nd.a ++; return ;}void changeNodeB(node* ...原创 2020-02-25 11:21:43 · 1004 阅读 · 0 评论 -
【 文件读写 】简单C/C++文件读写代码示例—— FILE 指针和 fstream 流文件
#include <iostream>#include <fstream>#include <string>#include <cstdio>using namespace std;int main(){ // C++ cout << "C++ IO:" << endl; fstream...原创 2020-02-25 10:33:38 · 387 阅读 · 0 评论 -
【 数据结构 】哈夫曼树与哈夫曼编码
定义:按照字符的频率(频数)构建最优树,即把频率小的树尽可能放在深层节点,频率大的树放在浅层节点,从而使得所有叶子节点的带权路径和最小。这样做的好处是依照路径重新对叶子节点的字符进行01编码,从而使高频率的字符编码短,低频率字符的编码长,这种不定长的编码可以使得最终文本长度减小,实现数据压缩; // 树节点数据结构typedef struct tnode{ char c; ...原创 2020-02-24 21:54:45 · 460 阅读 · 0 评论 -
【 数据结构 】字典树的构建及搜索代码实现
#include <stdio.h>#include <stdlib.h>#define Alphabet_SIZE 26// 数据结构typedef struct tnode{ int flag; // 是否为 word 节点 / word 的数量 struct tnode *next[Alphabet_SIZE]; // 子节点}t...原创 2020-02-24 21:13:53 · 249 阅读 · 0 评论 -
238. Product of Array Except Self
238. Product of Array Except Self要求时间复杂度 O(n),空间复杂度 O(1)大神题解:乘积 = 左边乘积 * 右边乘积 计算左边乘积到 res1[] 计算右边乘积到 res2[] 计算 res1, res2 逐项相乘 化简 2, 3, 4 步,将 3, 4 直接乘在 res1 上实现空间复杂度O(1)class Solution(obje...原创 2020-02-16 18:10:42 · 201 阅读 · 0 评论 -
230. Kth Smallest Element in a BST
230. Kth Smallest Element in a BST二叉搜索树 为空 左子树的值均小于根节点 右子树的值均大于根节点 先序遍历即为从小到大遍历,因此先序遍历的第 k 个元素为 kth Smallest 元素# Definition for a binary tree node.# class TreeNode(object):# def __in...原创 2020-02-13 12:34:19 · 190 阅读 · 0 评论 -
215. Kth Largest Element in an Array
215. Kth Largest Element in an Array快速选择算法,和快排是同一个作者。选择一个轴点,将比其大的放在前面,比其小的放在后面,则中轴点为第 index + 1 小; 判断 index 和 k 的关系,从而决定在前半段寻找第 k 大还是后半段; 细节见代码class Solution(object): def findKthLargest(se...原创 2020-02-13 11:41:36 · 191 阅读 · 0 评论 -
148. Sort List
148. Sort List链表的归并排序,要点:划分:采用快慢指针的方法,将链表划分为两半 递归:递归对链表进行排序 合并:对链表的排序只需更改指针顺序,无须创建新空间# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self....原创 2020-02-12 11:41:58 · 183 阅读 · 0 评论 -
41. First Missing Positive
41. First Missing Positive由于只有 n 个数,因此不用担心 负数和大于 n 的数,所以当遇见负数或大于 n 的数时,将其置为 1,此时列表中数均满足 [1, n]; 对于列表中的数 nums[i],将其作为 index 置 nums[ nums[i] ]为负数,则表示 nums[i] 出现过; 这样处理后,重现遍历,则遇见的正数则表示未出现过; 注意数组大小...原创 2020-02-04 21:11:50 · 268 阅读 · 0 评论 -
36. Valid Sudoku / 37. Sudoku Solver
36. Valid Sudoku如下图对方格进行划分,划分后将 box 的序号与 i, j 对应起来,即 box_index = ( i / 3 ) * 3 + ( j / 3 )如此以来问题便简单了许多,只需要遍历一遍,对每个 i, j 判断是否有效即可,分为位判断和哈希匹配两种,对于详细的位运算暂时还没进一步理解,写了一个比哈希匹配还 low 的强行位运算。class ...原创 2020-02-03 11:47:44 · 218 阅读 · 0 评论 -
49. Group Anagrams
49. Group Anagrams使用哈希表建立 string 和 vector<string> 的关系,对于含有相同字符的字符串,先排序即可知道其是否字母异位。注意使用 unorder_map 加快搜索速度, 使用 auto可提高代码简洁度。class Solution {public: vector<vector<string>>...原创 2020-02-02 12:29:55 · 242 阅读 · 0 评论 -
48. Rotate Image
48. Rotate Image图片顺时针旋转 90°等于转置 + 水平翻转 图片逆时针旋转 90°等于转置 + 垂直翻转 图片旋转 180°等于水平翻转 + 垂直翻转了解了这些,方法明了了起来。class Solution {public: void rotate(vector<vector<int>>& matrix) {...原创 2020-02-02 11:04:52 · 209 阅读 · 0 评论 -
34. Find First and Last Position of Element in Sorted Array 二分搜索
34. Find First and Last Position of Element in Sorted Array关于二分搜索的精华帖按照其方法,分别编写求上下界的二分搜索函数,求得上下界,代码如下:class Solution {private: int left_bound(vector<int>& nums, int target){ ...原创 2020-01-30 13:22:17 · 238 阅读 · 0 评论 -
33. Search in Rotated Sorted Array 非常简单的算法
33. Search in Rotated Sorted Array执行用时 :4 ms, 在所有C++提交中击败了90.71%的用户内存消耗 :9 MB, 在所有C++提交中击败了5.13%的用户从序列是排序的可以看出,此问题为二分搜索BinarySearch的变形,暂且将在题述条件下的序列搜索称为rotatedSearch, 那么问题可以分为:1. 当 tar...原创 2020-01-30 12:08:51 · 344 阅读 · 0 评论 -
30. Substring with Concatenation of All Words
30. Substring with Concatenation of All Words滑动窗口初次尝试失败,会超时,213/230,准备看源码class Solution {private: bool mapEqual(map<string, int> mp1, map<string, int> mp2){ map<stri...原创 2020-01-29 19:32:38 · 231 阅读 · 0 评论 -
29. Divide Two Integers
29. Divide Two Integers题解:1. 先对特殊情况进行讨论:被除数为 0 时,直接返回 0; 除数为 1 时,不可能溢出,直接返回被除数; 除数为 -1 时,可能会溢出,判断并返回被除数/最大值2. 判断被除数和除数的符号是否相同,并将其均置为正数;3. 计算被除数除以除数(算法核心):若被除数小于除数,返回0; 若除数小于被除数,则对除数计数器 +...原创 2020-01-29 12:27:40 · 200 阅读 · 0 评论 -
38. Count and Say
38. Count and Say其实思路很简单,递归调用求出n-1的字符串,然后遍历判断每个数字对应的次数,转化为str输出即可。class Solution {public: string countAndSay(int n) { if(n == 1){ return "1"; } else if(n ...原创 2020-01-28 23:42:24 · 246 阅读 · 0 评论 -
32. Longest Valid Parentheses
32. Longest Valid Parentheses 本题解采用了三种方法,分别为常规动态规划、遍历方向匹配和动态规划栈,其中方法一时间复杂度过大,不能完全AC,会超时,不想看的同志可以忽略;方法二算法简单,容易理解,速度慢,可以AC;方法三为方法二的进阶,稍难一点(其实看了二以后就不太难了),速度较快。常规动态规划:dp[i][j] 表示从 i 到 j 之间有效初始时...原创 2020-01-28 17:44:51 · 238 阅读 · 0 评论 -
31. Next Permutation
31. Next Permutation题解: 此题需要先理解字典序,明确12345的字典序小于12354 ,即越不按从小到大的字典序,排列越大。那么next permutation(下一排列即为 当前面排序都相同,最靠后的满足 nums[i] > nums[i-1] 的元素,让其不不满足nums[i] > nums[i-1] 的同时,i 之后的数字排序字典序最小,...原创 2020-01-28 00:27:29 · 188 阅读 · 0 评论 -
25. Reverse Nodes in k-Group
25. Reverse Nodes in k-Group参考算法:图解k个一组翻转链表 链表的翻转就是将当前节点的下个节点的后继节点置为当前节点。C++代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * L...原创 2020-01-25 18:53:36 · 208 阅读 · 0 评论 -
23. Merge k Sorted Lists
23. Merge k Sorted Lists题解:1. 优先级队列法 本打算采用优先级队列的方式,将 struct 中 的 operator操作符重载,然后使用 STL<queue> 的 priority_queue 进行排序,然而 ListNode 是预先定义好的,对于操作符重载还不太熟悉的我,暂时无法解决在函数外如何为 ListNode 的比较重载 oper...原创 2020-01-25 18:15:52 · 212 阅读 · 0 评论 -
22. Generate Parentheses
22. Generate Parentheses题解:1. 回溯法 回溯法需要注意的是,因为结果是多个 string ,因此需要有一个 vector<string> 来存储结果;由于是多个 string ,因此假如利用函数返回值来为当前 string 获取后续 string ,由于 "(" 后面可能接 "(" 和 ")" 两种答案,而返回值只能返回一个,因此不...原创 2020-01-25 18:14:28 · 194 阅读 · 0 评论 -
19. Remove Nth Node From End of List
19. Remove Nth Node From End of List题解: 本题主要思路时一直关注倒数第n个,从指针 1 遍历开始就计算 head 是倒数第几个,当head 是倒数第 n 个时就用指针 2 开始记录第 n 个的位置,指针 1 和 2 同时变化,则指针 2 一直指向倒数第 n 个节点,则当直到指针 1 遍历全部链表,则指针 2 位置为倒数第 n 个。具体细...原创 2020-01-23 09:19:29 · 212 阅读 · 0 评论 -
12. Integer to Roman
12. Integer to Roman题解: 这道题很明显是一道贪心算法的问题,跟找零钱这道题异曲同工之妙,但略有区别,因为它存在 4 = IV 等这种,而不是单纯的 4 = IIII,这是这两道题的最大区别。假如依次分类讨论到底该 IV 还是 IIII 过于麻烦, 有朋友提出了一种思路,很新奇,即将 IV 也看做和 V 一样的单位,此时问题明了了许多,甚是简洁,细节如下:...原创 2020-01-18 13:52:35 · 183 阅读 · 0 评论 -
11. Container With Most Water
11. Container With Most Water题解:暴力搜索法,时间复杂度 O(n²),空间复杂度 O(1)。class Solution {public: int maxArea(vector<int>& height) { int maxV = 0; for(int i = 0; i < height...原创 2020-01-18 11:55:49 · 189 阅读 · 1 评论 -
10. Regular Expression Matching
10. Regular Expression Matching10. Regular Expression Matching题解:方法一:动态规划 dp[i][j]表示 s 的前 i 个元素和 p 的前 j 个元素可以匹配,则状态转移方程为: if ( s[i] == p[j] ) dp[i][j] = dp[i-1][j-1] i...原创 2020-01-17 10:46:08 · 195 阅读 · 0 评论 -
8. String to Integer (atoi) 【有限状态机】
8. String to Integer (atoi)题解: 由于数字限制为 int 32位,为了简化算法采用 long int 64位进行处理,算法采用编译原理中有限状态机的方案,初始状态为0。 0 状态:遇到空格字符时,状态不发生变化,仍为0; 遇到字母字符/非数字字符/非负号时,变为无效状态 4; ...原创 2020-01-16 12:03:44 · 293 阅读 · 0 评论 -
5. Longest Palindromic Substring
5. Longest Palindromic Substring1. 暴力法,遍历回文,时间复杂度O( n³ ),无法AC,通过了43/103个测例class Solution {public: string longestPalindrome(string s) { for(int len = s.length(); len > 0; len--){ ...原创 2020-01-15 22:43:27 · 183 阅读 · 0 评论 -
4. Median of Two Sorted Arrays
4. Median of Two Sorted Arrays题解:解题思路1,寻找第k小数(Kth)结题思路2,暴力求解class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { ...原创 2020-01-15 22:41:53 · 178 阅读 · 0 评论 -
3. Longest Substring Without Repeating Characters
Link here see more.class Solution {public: int lengthOfLongestSubstring(string s) { int strlen = s.length(); int start = 0, len = 0, res; while(start + len <= strlen...原创 2020-01-15 22:40:53 · 182 阅读 · 0 评论 -
1. Add Two Numbers
Link here see more./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {pu...原创 2020-01-15 22:39:39 · 204 阅读 · 0 评论 -
C++中map和iterator的使用
#include <iostream>#incldue <map>using namespace std;int main(){ map<char, int> mp; //建立map map<char, int>::iterator iter; //建立map的迭代器 mp.insert(pair<char,...原创 2020-01-13 15:31:26 · 1881 阅读 · 0 评论 -
[NOJ·NWPU]西北工业大学NOJ题解和C语言总结
Talk is cheap, show you code 多说无益,给你答案NWPU-NOJ涉及基础知识总结(建议基础知识薄弱的童鞋在借鉴源码前看一下) 链接:https://pan.baidu.com/s/1pA_9EAsG4JpgNI0q8_2r3A 提...原创 2019-12-24 19:31:41 · 7057 阅读 · 1 评论 -
C++中int类型和string类型的相互转换
#include <iostream>#include <cstdio> // atoi#include <string>#include <sstream> // stringstreamusing namespace std;int main(){ // string2int using function s.str() and ...原创 2019-06-30 19:48:20 · 442 阅读 · 0 评论 -
C++优先级队列priority_queue使用
/* 优先级队列的使用方法及注意事项*/ #include <iostream>#include <queue>using namespace std;struct Node{ int a, b; Node(int aa = 0, int bb = 0){ a = aa, b = bb; } friend bool operator < (...原创 2019-05-29 21:49:58 · 230 阅读 · 0 评论 -
CCF-CSP刷题要点——2018/09/19
1、超过15分钟无思路,放弃。2、超过30分钟无编程实现,放弃。3、超过20分钟无法成功修改BUG,放弃。4、多看题解,多总结方法,题海战术,不要自己想算法,白费脑子!!!...原创 2018-09-19 21:36:05 · 3541 阅读 · 1 评论 -
热身题B——B - Candy Sharing Game
能把热身赛的题做成我这种水平的菜鸡估计没几个了。。。理工糙汉子没有太多的话想对你讲,直接上代码算了,反正有注释。。题目:A number of students sit in a circle facing their teacher in the center. Each student initially has an even number of pieces of candy.原创 2018-01-17 11:42:04 · 400 阅读 · 0 评论 -
热身题A——The 3n + 1 problem
先不说题,我要吐槽!!!这题太坑了,你给了1-1,000,000的范围,然后你竟然不用任何精妙的算法,直接暴力循环就能AC,然而我还以为要用什么精妙的算法,写了大半天。。。(虽然最后还没写出来,手动黑脸),原因是忘了比较i和j的大小顺序,最后气哄哄的跑去看题解,f**k,竟然真的是水题,我还是太菜狗了。正题:没有废话,直接上代码://problems://Problems in原创 2018-01-17 10:51:15 · 410 阅读 · 0 评论