leetcode
single6
这个作者很懒,什么都没留下…
展开
-
回溯算法团灭排列/组合/子集问题
今天就来聊三道考察频率高,而且容易让人搞混的算法问题,分别是求子集(subset),求排列(permutation),求组合(combination)。这几个问题都可以用回溯算法解决。一、子集问题很简单,输入一个不包含重复数字的数组,要求算法输出这些数字的所有子集。vector<vector<int>>subsets(vector<int>&nums);比如输入nums = [1,2,3],你的算法应输出 8 个子集,包含空集和本身,顺序...原创 2020-09-20 23:44:21 · 226 阅读 · 0 评论 -
快速排序--思路理解
与归并排序一样,快速排序也是一个分治算法,需要选择一个基准(第一个元素,最后一个元素,随机一个元素),以此基准作为划分;快速排序的关键是划分partion();。每一趟划分,我们就可以将作为基准值 x 放到排序数组的正确位置,并且将所有比 x 小的放到 x 的左边,所有比 x 大的元素放到 x 的右边。class QuickSort { /*将最后一个元素作为 pivot 进行划分操作*/ int partition(int arr[], int low, int hig...原创 2020-08-12 23:23:22 · 291 阅读 · 0 评论 -
LeetCode297:二叉树的序列化与反序列化
实现一个类:public class Codec { // 把一棵二叉树序列化成字符串 public String serialize(TreeNode root) {} // 把字符串反序列化成二叉树 public TreeNode deserialize(String data) {}}比如:serialize方法也许会把它序列化成字符串2,1,#,6,3,#,#,其中#表示null指针,那么把这个字符串再输入deserialize方法...原创 2020-08-12 00:06:27 · 173 阅读 · 0 评论 -
最大矩形、柱状图的最大面积 C++
最大矩形问题分两种:一种是柱状图的面积,一种是给出一个矩阵,找出矩阵(点为1)的最大面积;图形分别如下:后面一种可以转换成各行的柱状图的叠加;柱状图1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 矩阵1、柱状图的最大面积核心思想主要是...原创 2020-07-27 22:51:19 · 704 阅读 · 0 评论 -
异常处理,Python 猜数字游戏
异常就是运行期检测到的错误。可以根据异常类型来修改代码;常见类型:OverflowError:数值运算超出最大限制AttributeError:尝试访问未知的对象属性IOError:输入/输出操作失败OSError:操作系统产生的异常(例如打开一个不存在的文件)MemoryError:内存溢出(可通过删除对象释放内存)NameError:尝试访问一个不存在的变量UnboundLocalError:访问未初始化的本地变量RuntimeError:一般的运行时异常SyntaxEr...原创 2020-07-25 23:08:34 · 4471 阅读 · 1 评论 -
leetcode 习题 136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。根据给出条件,一个数组,除了一个元素出现一次,其他元素均是成对出现;线性时间复杂度:时间复杂度最高为O(n)不使用额外空间:要求空间复杂度最高为O(1)。思路一:可以将数组排序,然后两个指针进行遍历即可:该数经过排序后肯定为偶数class Solution {public: int singleNumber(vector<int>& nums) {...原创 2020-07-23 22:00:06 · 182 阅读 · 0 评论 -
KMP算法详细解析(C/C++)
从文本中找出匹配的单词或者字符串,使用kmp算法,效率提升很多,可以防止多次重复比较,浪费时间;前提是需要找到该字符串的公共前后缀,不至于从头比较:具体分析如下:如:T : a a a a a a a a bP : a a a a b找出P的公共前后缀: 0: a 1 : a a 2 : a a a 3 : a a a a : a a a a b //总共五个字符,所以将前面的数组下移: -1 : a 0 : a a 1 : a a a 2 :原创 2020-07-19 12:29:44 · 285 阅读 · 0 评论 -
LeetCode 链表翻转(按K个一组) 详解
给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->...原创 2018-09-02 17:09:27 · 3939 阅读 · 0 评论 -
878. 第 N 个神奇数字 第N个丑数
如果正整数可以被 A 或 B 整除,那么它是神奇的。返回第 N 个神奇数字。由于答案可能非常大,返回它模 10^9 + 7 的结果。示例 1:输入:N = 1, A = 2, B = 3 输出:2 示例 2:输入:N = 4, A = 2, B = 3 输出:6 示例 3:输入:N = 5, A = 2, B = 4 输出:10 示例 4:输入:N = 3, A = 6, B = 4 输...原创 2018-09-02 22:34:30 · 551 阅读 · 0 评论 -
关于动态规划的专题习集,C++ 换硬币,背包问题
数字三角形 5 1 412 34 56 在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或 右下走。只需要求出这个最大和即可,不必给出具体路径。 三角形的行数大于1小于等于100,数字为 0 - 99 输入格式:351 412 34 56递归方法:...原创 2018-09-11 11:33:00 · 912 阅读 · 0 评论 -
OPPO笔试 把字符串分隔成逗号分隔成数组 int,string
输入一串数字字符串,逗号相隔,分成int型;#include<iostream>#include <vector>#include <string.h>#include<string>#include<stdlib.h>using namespace std;typedef string::size_type sz;i...原创 2018-09-11 09:31:48 · 452 阅读 · 0 评论 -
找到数组中第k大值的位置 ,字符串中单词替换
找出数组中第K大小的数,输出数所在的位置。例如{2,4,3,4,7},第1大的数是7,位置在4。第2大,第3大的数是4,位置在1,3,则返回1和3都可以。分析:考虑map:map<key,value> 自带对value去重和对key排序的功能,所以可以把位置下标放在value,把数组元素的值放在key。这样对key排序完,找到第k个值对应的下标就可以了。#include<...原创 2018-09-11 16:40:30 · 431 阅读 · 0 评论 -
同步异步,阻塞非阻塞 ,TCP/IP协议 ,快速排序一次后 等C++笔试面试(3)
同步、异步::消息的通知机制解释:涉及到IO通知机制;所谓同步,就是发起调用后,被调用者处理消息,必须等处理完才直接返回结果,没处理完之前是不返回的,调用者主动等待结果;所谓异步,就是发起调用后,被调用者直接返回,但是并没有返回结果,等处理完消息后,通过状态、通知或者回调函数来通知调用者,调用者被动接收结果。阻塞、非阻塞::程序等待调用结果时的状态涉及到CPU线程调度;所谓阻塞,就是调用...原创 2018-09-13 10:04:19 · 542 阅读 · 0 评论 -
分数序列的前n项之和
分数序列 2/1,3/2,5/3,8/5,13/8,21/13,.... 求这个分数序列的前n项之和。#include<iostream>#include<stdio.h>using namespace std;int main(){ int N; double a = 2; double b = 1; double c = 0;...原创 2018-09-11 09:52:22 · 1968 阅读 · 0 评论 -
leetcode 9 回文数 整数转为字符串
1、string转int的方式: 采用标准库中atoi函数。string s = "12"; int a = atoi(s.c_str()); 对于其他类型也都有相应的标准库函数,比如浮点型atof(),long型atol()等等。//采用sstream头文件中定义的字符串流对象来实现转换。istringstream is("12"); //构造输入字符串流,流的内容初始化为...原创 2018-09-02 20:34:39 · 353 阅读 · 0 评论