03 2021 档案
摘要:一、BFS BFS的实现是基于队列的,每次push一层的所有可用元素后再依次push每个元素的下一层后pop当前元素,直到队列为空。 以一个ACM题目进行说明——红与黑。 问题描述 有一个长方形的房间,上面铺着方砖。每块瓷砖都是红色或黑色的。一个男人站在一块黑色的瓷砖上。从一个瓦片,他可以移动到四个
阅读全文
摘要:对于DFS来说,是和递归绕不开的。 1、全排列 对于全排列,最重要的一点就是标记每个数是否已经被使用,而核心点即对于递归的理解,进而是掌握如何设计。 题目描述 排列与组合是常用的数学方法。先给一个正整数 ( 1 < = n < = 10 )。例如 n=3,所有组合,并且按字典序输出: 1 2 3 1
阅读全文
摘要:一、最常用——恒等变换 题目描述 N个读者依次编号为1,2,…,N,把M本书依次编号为1,2,…,M。同时,按照“臭味相投”的原则,和你喜欢读同一本书的人,就是你的潜在朋友。你现在的任务是从这份借阅记录中计算出每个人有几个潜在朋友。 输入格式 每个案例第一行两个整数N,M,2 <= N ,M<= 2
阅读全文
摘要:这里主要归纳一下C++中数组的sort()函数。 sort函数的用法是: #include <algorithm> …… sort(firtst,end,cmp); 其中,first代表开始位置,end代表结束位置,cmp代表排序规则,可以自定义,也可以省略(默认非降序)。 可以自定义cmp函数对于
阅读全文
摘要:对于vector数组的使用,不要为了使用而使用,能用普通的就用普通的,特别是在题目中已经说了人数或者其他表明数组大小的信息的情况下。vector能够动态变化固然有其好的方面,但是在许多方面是不如普通的数组的,比如遍历,特别是维数增加之后。 简单总结一下最近遇到的问题: 对于vector数组的遍历:
阅读全文
摘要:编写一个函数,检查输入的链表是否是回文的。 我的思路: 1.如果能知道长度的话,就可以把前半段链表倒置,然后与后半段依次判断。 2.直接把整个链表倒置,再依次比对,但时间复杂度满足不了O(n)。 /** * Definition for singly-linked list. * struct Li
阅读全文
摘要:算法一: 遍历字符串s1,每次取当前元素之前的字串head和之后的字串tail,判断tail+head是否为s2即可。 class Solution { public: bool isFlipedString(string s1, string s2) { int len1= s1.length()
阅读全文
摘要:一、旋转矩阵 1.旋转90° 矩阵转置后再沿着对称线对称即可 class Solution { public: void rotate(vector<vector<int>>& matrix) { int n = matrix.size(); if(n==0||n==1){ return; } fo
阅读全文
摘要:今天碰到了一个关于回文串的问题:判断一个字符串重新排列后能否形成一个回文串。 个人初始思路:统计每种字符在字符串中的出现次数,最后如果次数为奇数的多于一个,则false。但是用于存储字符串出现次数的数组不能用s.length来构造,因为是变量。 解答思路:通过使用unordered_map<char
阅读全文
浙公网安备 33010602011771号