
刷题
SoWhat1412
微信搜索【SoWhat1412】,第一时间阅读原创干货文章。人之患、在好为人师、不实知、谨慎言。点点滴滴、皆是学问、看到了、学到了、便是收获、便是进步。
展开
-
LeetCode刷题 链表、堆、递归、回溯、DFS BFS、贪心
二叉树(常用递归)前序顺序:根节点排最先,然后同级先左后右中序顺序:先左后根最后右后序顺序:先左后右最后根颜色标记法(推荐)原文 官方题解中介绍了三种方法来完成树的中序遍历,包括:递归借助栈的迭代方法莫里斯遍历在树的深度优先遍历中(包括前序、中序、后序遍历),递归方法最为直观易懂,但考虑到效率,我们通常不推荐使用递归。栈迭代方法虽然提高了效率,但其嵌套循环却非常烧脑,不易理解,容易造成一看就懂,一写就废的窘况。而且对于不同的遍历顺序(前序、中序、后序),循环结构差异很大,更增加了原创 2020-11-18 13:46:10 · 1049 阅读 · 2 评论 -
LeetCode刷题 数组、链表
数组1、两数之和描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。解题思路:用一个map来存储目标数据值,避免暴力解析获得结果。class Solution { public int[] twoSum(int[] nums, int target) { int[] indexs = new int[2]; H原创 2020-11-04 13:01:50 · 844 阅读 · 0 评论 -
Python十大排序算法
代码如下: 快排'''几乎是我们学习排序入门算法了,两次遍历,时间复杂度较高n*n,稳定排序'''def bubbleSort(tmpList): for i in range(len(tmpList)-1): for j in range(len(tmpList)-1,i,-1): if tmpList[j-1] > tm...原创 2018-12-05 19:39:25 · 15162 阅读 · 3 评论 -
算法思想概述
1 枚 举 2 递 推 3 递 归 4 分 治 5 动态规划 6 贪 心 7 回 溯 8 模 拟 9 总 结转载 2017-05-05 10:27:19 · 1324 阅读 · 0 评论 -
回溯算法之 八皇后、01背包、最短路径、有效括号
回溯算法原创 2018-07-16 15:46:12 · 988 阅读 · 0 评论 -
快速搞定并查集
高清思维导图已同步Git:https://github.com/SoWhat1412/xmindfile,关注公众号sowhat1412获取海量资源并查集并查集被很多人认为是最简洁而优雅的数据结构之一,主要用于解决一些元素分组的问题。比如最小生成图里的克鲁斯卡尔算法就用的此知识点。它管理一系列不相交的集合,并支持两种操作:合并(Union):把两个不相交的集合合并为一个集合。查询(Find):查询两个元素是否在同一个集合中。当然,这样的定义未免太过学术化,看完后恐怕不太能理解它具体有什么用.原创 2020-10-24 10:03:21 · 615 阅读 · 2 评论 -
分治算法
分治算法讲解原创 2019-08-21 15:03:03 · 579 阅读 · 1 评论 -
贪心算法讲解
1. 前言随着现在互联网行业的发展,越来越多的框架、中间件、容器等开源技术不断地涌现,更好地来服务于业务,实现业务并解决问题。然而面对众多的技术选择,我们要如何甄别出适合自己团队业务的技...原创 2020-10-22 07:05:00 · 1156 阅读 · 0 评论 -
字节跳动面试汇总
字节跳动面试汇总【字节跳动】字节跳动-抖音C++开发实习一二面凉经https://www.nowcoder.com/discuss/342523【字节跳动】字节跳动后端面经 已拿意向书https://www.nowcoder.com/discuss/302265【字节跳动】字节c++一面https://www.nowcoder.com/discuss/298886【字节跳动】字节跳动...原创 2020-02-20 22:21:43 · 5636 阅读 · 22 评论 -
为什么一个 byte 的存储范围是 -128 ~ 127
我们知道,对于有符号类型,计算机在处理的时候会把最高位当做符号位,0表示正数,1表示负数。举例来说(以下举例均针对8位有符号数):0000 0001即为1,1000 0001即为-1,那么很容易得到8位有符号数值的表示范围应该是1111 1111~0111 1111,也就是-127~127,问题来了,-128是怎么来的呢?在说明这个问题之前,先来补充点额外的知识:在计算机的存储和计...原创 2019-10-22 20:18:12 · 8452 阅读 · 5 评论 -
编程之美:判断两链表是否相交
《编程之美》里面有一篇是讲如何判断两链表是否相交,读后觉得原文太过啰嗦。于是,笔者总结了一下,此类问题可以扩展为两大类,分别是:1、单链表与环问题链表与环问题2、单链表相交与环问题(本文)给定两单链表A、B,只给出两头指针。请问:1、如何判断两单链表(无环)是否相交?有两种可取的办法:(1)人为构环,将链表A的尾节点指向链表B,再判断是否构环成功?从链表B的头指针往...原创 2017-08-01 13:56:55 · 558 阅读 · 0 评论 -
C++内存泄漏问题
C++ 提供给了用户操作内存的权限,随之而来的就是关于内存泄漏问题, 通俗来说就是用户堆上申请了内存 可是没有去归还给系统 ,这使得操作系统的内存越来越小 最后崩溃 无内存可用。 下面列举几种常见内存泄漏情况1. C++或者C 中没有调用匹配的 malloc free new delete导致内存泄漏 这是最根本原因。 构造函数new 了 记得析构函数delete2. 有时 申原创 2017-06-15 16:33:58 · 690 阅读 · 0 评论 -
回调函数
定义:例如:你想寄包裹,肯定要留下自己的联系方式和地址吧(相当于回调函数的地址)。然后开始打电话给快递,但快递不会马上来取件,而是通过你留下的联系方式和地址,在他有空或顺路的时候来联系你取件。在送包裹的过程中,服务好的话快递会在你包裹快递状态变化的各个环节通知你(比如已经送到分拣中心,由中心分发开始投递,到达对方所在城市,对方已经签收)。 在理解“回调函数”之前,首先讨论下函数指原创 2017-06-12 17:19:35 · 644 阅读 · 4 评论 -
最全BAT面试题
第一:复杂度估算和排序算法(上)1) 时间复杂度和空间复杂度,2)认识对数器,0,有一个你想要测试的方法a1,实现一个绝对正确的但是复杂度不好的方法b2,实现一个随机样本产生器3,实现比对的方法4,把方法a和方法b比对很多次来验证方法a是否正确5,如果有一个样本使得比对出错,打印样本分析是哪个方法出错6,当样本数量很多时比对测试依然正确,可以确定方法a已经正确3)冒泡...原创 2019-05-05 20:24:38 · 16489 阅读 · 1 评论 -
用Python写算法 | 蓄水池算法实现随机抽样
现在有一组数,不知道这组数的总量有多少,请描述一种算法能够在这组数据中随机抽取k个数,使得每个数被取出来的概率相等。如果这组数有n个,那么每个数字取到的概率就是k/n,但是这个问题的难点在于不知道这组数的总数,也就是不知道n,那么该怎么计算每个数取到的概率呢?蓄水池算法游泳池(蓄水池)大家都不陌生,有些游泳池中的水是活的,有入水管也有出水管,那么和泳池体积相当的水流过之后,...转载 2019-05-09 20:47:17 · 1383 阅读 · 0 评论 -
用 Rand7() 实现 Rand10()
首先需要注意的是,数字1-10应该具有相同的生成概率。由于我们只能使用rand7函数,所以思路必然是组合使用rand7函数。如果假设:a = rand7()b = rand7()那么通过 x = a + (b - 1) * 7 可以获取数字 1 到 49:[[ 1. 8. 15. 22. 29. 36. 43.] [ 2. 9. 16. 23. 30. 37. 4...转载 2019-05-09 20:51:11 · 1973 阅读 · 0 评论 -
递归 回溯 循环
#if 1#include <iostream>using namespace std;void move(int n,char A, char B, char C){ if(1==n) { cout<<A<<"-->"<<C<<endl; } else {...原创 2017-03-01 20:10:00 · 892 阅读 · 6 评论 -
轻松搞定内存对齐
一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x00000002,则CPU如果取它的值...原创 2017-06-03 18:08:02 · 17835 阅读 · 16 评论 -
统计一个数阶乘0的个数
这里先给出其计算公式,后面给出推导过程。令f(x)表示正整数x末尾所含有的“0”的个数,则有: 当0 当n >= 5时,f(n!) = k + f(k!), 其中 k = n / 5(取整)。计算举例f(5!) = 1 + f(1!) = 1f(10!) = 2 + f(2!) = 2f(20!) = 4 + f(4!) = 4f(100!) = 20 +原创 2017-04-10 18:12:52 · 804 阅读 · 0 评论