4 henuzxy

腾讯科技(深圳)公司 - 软件工程师

我要认证

即将成为刷题过千的男人。

等级
TA的排名 1w+

leetcode 974. 和可被 K 整除的子数组

给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]提示:1 <= A.length <= 30000-10000 <= A[i] <= 100002

2020-05-28 00:09:21

leetcode 41. First Missing Positive(思维)

First Missing PositiveHard2902741Add to ListShareGiven an unsorted integer array, find the smallest missing positive integer.Example 1:Input: [1,2,0]Output: 3Example 2:Input: [3,4,-1,1]Out...

2020-04-17 00:53:10

leetcode 1320. Minimum Distance to Type a Word Using Two Fingers (dp O(N) Solution)

You have a keyboard layout as shown above in the XY plane, where each English uppercase letter is located at some coordinate, for example, the letter A is located at coordinate (0,0), the letter B is...

2020-01-31 00:26:49

Leetcode 155. 最小栈 O(1)空间复杂度的做法

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minS...

2020-01-10 01:43:58

链表的归并排序 & leetcode 148. 排序链表

发现链表的归并排序要注意的点还真挺多。对元素的划分,即要把链表从中间断开,这个可以利用一个快指针每次走两步,一个慢指针一次走一步的做法来实现,并记录前半部分链表的最后一个节点。对链表的合并,这个我是利用递归,很容易理解与实现。代码实现如下:/** * Definition for singly-linked list. * struct ListNode { * int ...

2019-09-18 23:45:49

C++ primer 内存管理 allocator类

当我们分配一大块内存时,我们通常计划再这块内存上按需构造对象,在次情况下,我们希望内存分配和对象构造分离。内存分配和对象构造组合在一起可能会导致不必要的浪费,比如数组等,有时我们并不需这么大的空间。allocator标准库allocator类定义在头文件memory中,它可以用来将内存分配和对象构造分离,它提供一种类型感知的内存分配方法,它分配的内存是原始的、未构造的。它也是一个模板对象,所...

2019-09-04 19:17:52

C++ 智能指针 循环引用以及解决方案

今天面试碰到这个问题了,结果自己没有搞清楚是个是么问题。感觉面试官说的也不太清楚。。我理解成两个两个智能指针A = B B = A,A = B,这种了。。。我还说这种不会引计数器多++。。尴尬。。自己基础方面还是有点问题。。循环引用如下#include<bits/stdc++.h>using namespace std;class B;class A{public: ...

2019-08-16 16:04:15

leetcode 334. 递增的三元子序列 (dp)

给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。数学表达式如下:如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1,使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1) 。示例 1:输入: [1,...

2019-08-13 17:05:16

Codeforces Round #578 (Div. 2) 题解报告

A. Hoteliersb模拟,直接按题意模拟就可以了。B. Block AdventureGildong is playing a video game called Block Adventure. In Block Adventure, there are n columns of blocks in a row, and the columns are numbered from 1...

2019-08-12 14:04:54

C++ 智能指针

在C++中,动态内存的管理通过new 和 delete来进行。但却经常存在以下三个常见问题:忘记通过delete 释放内存,这在编程中经常发生,尤其在某个函数内申请的一块内存作为临时使用,但在函数结束后却没释放。这就会导致“内存泄露”问题。使用已经释放过的内存,当有多个指针指向同一块内存时,某个指针释放后,却仍旧使用其他指针,就会导致这种错误。通过释放内存后把指针置为空,可以解决这种情况。...

2019-08-07 20:14:31

Codeforces Round #576 (Div. 2) 题解

7.30号的cf,很久没打cf了,决定打一下,果然掉了10分。。。幸好还是蓝名。。。打完第二天就发了高烧也是无语。。。吃药在宿舍躺尸两天,决定把题解写下。。A. City Day题目很简单,不过英文有点绕。就是找到第一个符合的点,这个点是前面x个的值都比它大,后面y个的值都比它大。相当于一个凹点。当然,前面x可以不存在,后面y个也可以有不存在的。代码如下:#include<bits/...

2019-08-02 20:27:57

leetcode 995. K 连续位的最小翻转次数 (区间更新,单点查询)

在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0。返回所需的 K 位翻转的次数,以便数组没有值为 0 的元素。如果不可能,返回 -1。示例 1:输入:A = [0,1,0], K = 1输出:2解释:先翻转 A[0],然后翻转 A[2]。示例 2:输入:A = [1,1,0],...

2019-07-30 21:27:35

leetcoe 第 147 场周赛 题解

A题:1137. 第 N 个泰波那契数人尽皆知傻逼题,直接数组模拟。B题:1138. 字母板上的路径我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。在本题里,字母板为board = [“abcde”, “fghij”, “klmno”, “pqrst”, “uvwxy”, “z”].我们可以按下面的指令规则行动:如果方格存在,‘U’ 意味着将我...

2019-07-29 15:08:20

leetcode 154. 寻找旋转排序数组中的最小值 II (二分)

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。示例 1:输入: [1,3,5]输出: 1示例 2:输入: [2,2,2,0,1]输出: 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/p...

2019-07-28 15:17:24

僵尸进程以及消灭僵尸进程

进程:占用内存空间的正在运行的程序,是系统进行资源分配和调度的基本单位。进程在完成工作后应该被销毁,如果完成工作后,仍占用系统资源不被销毁,就会变为僵尸进程,给系统带来负担。僵尸进程的产生向exit函数传递参数值,或者是通过return语句返回的值都会传递给操作系统,而操作系统如果没有把这些值传递给产生该子进程的父进程,那么操作系统就不会销毁子进程.处于这种状态下的进程就是僵尸进程。下面是...

2019-07-25 17:46:16

2019第十届蓝桥杯大赛C++B组 试题 B: 质数拆分

【问题描述】将 2019 拆分为若干个两两不同的质数之和,一共有多少种不同的方法? 注意交换顺序视为同一种方法,例如 2 + 2017 = 2019 与 2017 + 2 = 2019 视为同一种方法。题目其实不难,自己比赛的时候也是想到做法了,结果算出来的数贼大,感觉自己算错了。。。哎。。做法:(可能不是最佳的做法)先获得2019内的所有素数,然后就是一个从N个数里面凑成M的个数的题目了...

2019-06-06 11:24:26

leetcode 442. 数组中重复的数据 (思维) &448

给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例:输入:[4,3,2,7,8,2,3,1]输出:[2,3]最开始毫无思路,结果发现每个数的范围都是[1,n],所以可以考虑这种做法,如果某个位置的数不属于这个位置,就把他交换到对应...

2019-05-14 09:16:51

leetcode 494. 目标和 (动态规划)

给定一个非负整数数组,a1, a2, …, an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。示例 1:输入: nums: [1, 1, 1, 1, 1], S: 3输出: 5解释:-1+1+1+1+1 = 3+1-1+1+1+1 = 3+1+1...

2019-05-13 13:29:33

select函数实现I/O复用的回声服务器

select函数可以将多个文件描述符集中到一起统一监视。1.是否存在套接字接收数据2.是否传输无阻塞数据3.是否发生异常文件描述符集中到一起需要fd_set数据执行,该数组是存有0和1的数组。在fd_set里面注册或更改的操作都是由以下宏完成的。FD_ZERO(fd_set *fdset):将fd_set变量的所有位初始化为0.FD_SET(int fd,fd_set * fdset...

2019-05-11 19:05:02

leetcode 101. 对称二叉树 递归和迭代两种写法

给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ \2 2/ \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ \2 2\ \3 3做法就是,判断 根左右遍历 和 根右左遍历 是否相同。注意用BFS获得每层的做法是不对的(话说我最开始想到的竟然...

2019-05-11 12:37:47

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。