自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 Leetcode-圆圈中最后剩下的数字 约瑟夫环问题 原理推理简单易懂

问题描述Leetcode 题目描述Leetcode 题解因为官方题解以及网上其他题解比较难以理解,自己经过思考和推导,终于理清楚其数学原理,现进行分析,欢迎各位同学建议、指正推导过程举例说明:已知一个数组[1, 2, 3],每次删除第3个数字. 那么过程如下所示:删除前[1, 2, 3] --> 删除后[1, 2], 删除坐标为2,即(3 - 1) % 3;删除前[1,2] --> 删除后[2],删除坐标为0, 即(3 - 1) % 2返回数组[2]剩下数字,2,坐标2为0

2022-03-07 14:37:37 460

原创 c++11 pod类型

pod简介P for plain(平凡)o for old(和c兼容,可以使用c的memcpy和memset进行拷贝和初始化)pod划分为两类:1.平凡类型2.标准布局trivial(平凡)定义:1.拥有默认的构造和析构函数。但是一旦定义了构造函数,哪怕是无参甚至没有内部没有任何代码片段的构造函数,那么该构造函数也不再是trivial类型。例如: 如何将此类定义改变为trivial类型struct NoTrivial() { NoTrivial();}Notrivial::No

2021-05-29 12:22:04 146

原创 json根据关键字查找需要的行

可以选择按照needkeys顺序,或者不按照顺序,找到findkeys关键字都存在的某行def findKeyByKeys(CurLevelKey, outputdata, findKeys, needKeys, order=True): isLastFind = False if isinstance(needKeys, list): needKeysMap = OrderedDict() for item in needKeys:

2020-10-26 18:17:54 560

原创 python 解析类似 key:value,key:value 类型字符串

def parsecomma(dataString): comma = dataString.find(",") colon = dataString.find(":") if comma == -1: retDict = {} retDict[dataString[:colon]] = dataString[colon + 1:] return retDict else: retDict = parsecomm

2020-10-23 16:17:35 1008

原创 mongodb ubuntu c++ api环境构建问题解决

之前依赖包都安装好在/usr/local之后,安装mongo-cxx-driver-master出现下面问题:Could not find a package configuration file provided by “libbson-1.0”百度完全get不到。但是google里面找到两个解决方案(为什么印度阿三软件这么厉害,是有原因的),一个是修改cmake(抱歉,暂时做不到,我也没有尝试)第二个解决方案中文大白话就是,请重装c驱动。我之前使用的是apt-get安装的mongo-c-dr

2020-08-06 16:12:00 344

原创 关于c++ primer没有默认构造函数的类就不能动态分配数组

最近裸辞准备找重新工作,就c++基础内容看一下,回顾了一下c++ primer。看到allocator类的时候,里面介绍new和allocator类的时候,很简单来说,就是new 灵活性有欠缺,new将分配内存和构造组合在了一起,而allocator可以将二者分离(其实new就是两步走而已,第一步使用operator new分配内存,然后使用构造函数进行构造)。然后里面说,==更重要的是,那些没有...

2020-04-18 16:40:56 312

原创 [leetcode]带缓存的裴波拉且数列

斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.给定 N,计算 F(N)。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1.示例 ...

2020-02-18 13:58:59 205

原创 [leetcode]杨辉三角

给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]class Solution {public: vector<vector<int>> generate(int nu...

2020-02-18 12:43:08 132

原创 [leetcode]两两交换链表中的节点 递归解法

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.class Solution {public: ListNode* swapPairs(ListNode* head) { ListNode...

2020-02-18 12:00:33 144

原创 原型模式详解与应用场景

原型模式原理原型模式相关原理可以参考菜鸟学院链接。其实大致原理说起来也很简单,就是不使用构造函数,而是采用clone接口进行对象的创建和原对象的复制,是一个设计模式中的一个创建型模式,而本篇博文主要讲述的是,大多数博文中都没有讲清楚的,为何不使用构造函数,而是使用clone接口函数进行原对象的创建和复制,原型模式的应用场景是什么。我们来看:大多数博文中,所说,意图:用原型实例指定创建对象的种...

2020-02-12 11:00:04 488

原创 [leetcode]打开转盘锁

[leetcode]打开转盘锁你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为 '0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 ‘0000’ ,一个代表四个拨轮的数字的字符串。列表 deadends...

2019-12-15 16:35:16 335

原创 [leetcode]二叉树的序列化与反序列化(leetcode标准表达顺序)

序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例: /** * Defini...

2019-08-22 09:29:16 396

原创 [leetcode]二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”本来呢,刚开始我是准备用后序遍历加上中序遍历,两个遍历组合起来,找到根节点的,其实也是可行的,代码量可能稍微大一点,但是思路很简答。最后剪头发的时候,...

2019-08-18 21:15:51 111

原创 [leetcode]填充每个节点的下一个右侧节点指针 II

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。/*// Definition for a Node.class Node {public: int val; Node* left; Node* right; Node* n...

2019-08-18 18:15:10 207

原创 [leetcode] 根据一棵树的中序遍历与后序遍历构造二叉树。

注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * Tree...

2019-08-18 12:13:39 499

原创 shell脚本关于字符串操作

字符串单引号和双引号的差别单引号中间不能再次出现单引号,这就意味这单引号中间出现变量是无效的,直接点说,单引号中间无论出现什么都会原样输出。但是单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。双引号中间是可以出现变量的,而且双引号中间是可以进行字符转移的。直接上简单代码显示:#!/bin/bashwhere="CSDN"val1='I...

2018-11-18 12:35:20 148

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除