10 2019 档案
摘要:Q: A: 1.暴力计算,MN个节点,每个节点遍历MN次,O(M^2* N^2) 代码不贴了 2.我写的DP,时间O(MN),空间O(MN) 代码(有点长,但没什么技巧,就是强行保存算过的值) class Solution { public: int minTotalDistance(vector<
阅读全文
摘要:Q: 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。 示例 1: 输入: “abc” 输出: 3 解释: 三个回文子串: “a”, “b”, “c”. 示例 2: 输入: “aaa” 输出: 6 说明:
阅读全文
摘要:今天看剑指offer突然发现下学期都要去面试了,还没自己实现过快排非递归和归并非递归,这怎么能行呢,于是就写了一下。 (虽然有点卡壳,又回去翻了下算导,还是顺利写出来了) 先放图: 一亿数据量: #pragma warning(disable:4996) #include <iostream> #i
阅读全文
摘要:这个我觉得还比较好理解,比较标准的背包DP 然后放个链接一个妹子的01背包讲解,觉得很不错,防止自己啥时候忘了再看看 class Solution { public: int findTargetSumWays(vector<int>& nums, int S) { int sum=accumula
阅读全文
摘要:最近看剑指offer,记录一下 #include <iostream> #include <string> #include <cctype> #include<vector> #include<list> #include<cstring> #include<typeinfo> #include<
阅读全文
摘要:Q: 不使用运算符 + 和 - ,计算两整数 a 、b 之和。 示例 1: 输入: a = 1, b = 2 输出: 3 示例 2: 输入: a = -2, b = 3 输出: 1 A: 主要是记录一下加法可以用异或和与替代,异或等价于没有进位机制的加法,与
阅读全文
摘要:Q: 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内
阅读全文
摘要:今天看c++primer第六章,有这部分的内容,脑子有点糊涂了,看了几篇博客,自己敲了下,记录一下备忘。 二级指针: int **p; 二维数组: int p[10][10]; char q[10][10]; 指针数组: int *p[10]; 数组指针: int (*p)[10]; 咋区分后面这俩
阅读全文
摘要:Q: 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。每当你戳破一个气球 i 时,你可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻
阅读全文
摘要:DP class Solution { public: int longestIncreasingPath(vector<vector<int>>& matrix) { if(matrix.size()==0 or matrix[0].size()==0) { return 0; } int m=m
阅读全文
摘要:Q: 删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。 说明: 输入可能包含了除 ( 和 ) 以外的字符。 示例 1: 输入: “()())()” 输出: ["()()()", “(())()”] 示例 2: 输入: “(a)())()” 输出: ["(a)()()", “(a()
阅读全文
摘要:Q: 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <— / 2 3 <— \ 5 4 <— A: 解法1:常规层次遍历每次取最后一个元素: class
阅读全文
摘要:Q: 给定一个二叉树 struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。 初始状态下,所有 next
阅读全文
摘要:Q: 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。 示例 1: 输入: [1,3,4,2,2] 输出: 2 示例 2: 输入: [3,1,3,4,2] 输出: 3 说明: 不
阅读全文
摘要:该写法最大的优势就是不必考虑返回left还是right,因为条件是while(le<ri) 题目:704. 二分查找 1:若中位数是左中位数,那么判断排除左半部的语句,一定要排除左中位数,不然两个元素的时候,左中位数就是首元素,会死循环。 样例: class Solution { public: i
阅读全文
摘要:Q: 给定一个仅包含小写字母的字符串,去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 1: 输入: “bcabc” 输出: “abc” 示例 2: 输入: “cbacdcbc” 输出: “acdb” A: 自己不会,看的别人思路,
阅读全文
摘要:看C++Primer第三章看到的,记录一下。 下面这段代码非法,因为row指向的是每一行的一个大小为10的一维数组,默认转为指针,即row其实是一个int*类型的指针,显然内层循环就出错了 int arr[10][10]; for(auto row:arr) { for(auto col:row)
阅读全文

浙公网安备 33010602011771号