#include <iostream> #include <set> using namespace std; int main(){ int num = 0,tmp = 0; while (cin>>num) { set&
/* 递归:f(s,pos),从pos开始到字符串末尾进行种类获取 每层递归确定一个字符,注意递归结束要返回原位置,防止重复,错误 用set集合存储自动把重复的删除且排序。 return {} vector<string>(ret.begin(), ret.end()) insert()
第一题:小L的作文题目大意:给定一个字符串,找到字符串中特定字符的个数。 解题思路:遍历字符串,将目标字符与字符串中的每个字符,一一匹配,并进行计数即可。 ac代码: #include<bits/stdc++.h> using namespace std; int main() {
和书上写法不一样,输出的数是对的,但不确定能否通过测试。 #include <iostream> #include <cstdio> #include <algorithm> #include <queue> using namespace std;
http://acm.hdu.edu.cn/showproblem.php?pid=2037 /* 该题难在,想到,如何看尽可能多的完整节目的方案。如何找到最佳方案的步骤。程序也就是代码并不难。 */ #include <iostream> #include <cstdio>
/* total 标记是否需要替换数字 最大贪心,前面为一半不一样数字,后面为超过一半的相同数字,最终记录的数字为最多的那个 因此如果超过一半数字存在,无论如何排列最终都会记录下排列最多的数字。 但是最后还要遍历数组看是否超过一半。 当比较下一个数字时,total 为 0时候替换数字为当前数字。 时
HJ6质数因子这题感觉测试集不完整,输入2147483647这个测试数据很多代码会出现bug,下面提供一段代码。 #include <stdio.h> int isPrime(int a) { int count = 0; if (a == 2 || a == 3)
* #####在写代码之前我们先来看看一下三子棋的规则:玩家和电脑在棋盘上下棋,玩家走一步,电脑走一步,直到任何一方的三个棋子连起来或者棋盘下满了为止结束。# 先分析我们应该用代码实现什么是写代码之前的重要任务:1.打印游戏菜单。2.打印棋盘。3.实现玩家主观下棋和电脑自动下棋。4.判断游戏的输赢
#include <bits/stdc++.h> using namespace std; int main() { string str; getline(cin,str); char c; cin>>c; int cnt=0;
因为疫情期间太过放松,每天除了打代码就是玩,所以留下了很多后遗症,今年过年也是...因此,写下这篇博客来规范自己的行为. 首先今年暑假可能是要留校的,因为省赛?所以我暂不担心去了家里就会变颓废.然后我希望自己可以做到下面的几点. 比赛不咕,尤其是不用熬夜的比赛,坚决要打.. 尽量不熬夜,除非某人放
比特币的设计本身,蕴含着无政府主义(去中心化)和技术理想主义(严格限定的区块生成与新币发行机制)的色彩。整个体系透露出了对政府和金融机构强烈的不信任,也被激进人士解读为对通胀型法币的反抗和不信任。 所以,比特币的内在是有价值观偏好的。 比特币的基本结构 比特币的基本结构可以用以下9段话概述: 1.比
为什么说比特币的设计很牛逼呢?解释一下你就懂了。 当前互联网主要是信息传递,从早期的公告板到现在的微信Facebook,已经能实现全世界任意两点可以非常便捷地传递信息。但是,任意两点的转账现在还无法实现。国内支付宝和微信支付实现全国范围的自由转账,但是在全球范围,依然需要依赖传统金融体系。 比特币的
人们经常说,区块链的交易记录是不可更改的,是可信的。为什么? 理解这点需要引入一个概念:Hash算法。Hash算法有很多种,基本功能是:将任意长度的数据文件转换成一个唯一对应的固定长度字符串。你可以理解为,给任意一个文件生成了一串固定长度的乱码一样的标签。这个算法是不可逆的,就是说,你拿到这个标签,
小编整理出一篇Java进阶架构师之路的核心知识,同时也是面试时面试官必问的知识点,篇章也是包括了很多知识点,其中包括了有基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据
映射,以元素为key,数组索引为value遍历数组,若map中已经存在说明重复,取最小索引;不存在就添加到map中。int duplicate(vector<int>& numbers) { if(!numbers.size()) return -1;
理解了这些,再对照传统的金融系统,就知道:为啥区块链初听起来这么古怪难以理解,但是一旦理解之后,就会立马惊呼:卧槽,这才是未来,这才是金融的未来。什么P2P借贷、互联网金融,都是渣渣中的渣渣。 首先,数字货币有纯正的互联网基因。当前的各种互联网金融尝试,大多依附于传统金融体系,变革不够彻底,先天不足
第四,去中心化的区块链本质上是一个永不停息的机器,这开启了大规模、分布式协作的典范。利用这种模式,我们可以做很多之前无法想象的事情。未来在区块链的驱动下,我们不再局限于一种职一个公司,随时可以参与到自己感兴趣的项目中去(即使它远在地球另一端),贡献自己的力量,并获得对应回报。 第五,比特币将释放一个
1. Java基础1.1 为什么Java代码可以实现一次编写、到处运行?参考答案 JVM(Java虚拟机)是Java跨平台的关键。 在程序运行前,Java源代码(.java)需要经过编译器编译成字节码(.class)。在程序运行时,JVM负责将字节码翻译成特定平台下的机器码并运行,也就是说,只要在不
1.题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。2.思路:方法一:使用队列先进先出特点,将奇数偶数分开,再合并。 import java.util.*; public c
让我们抽象一点。 比特币网络的核心是处理交易,而且是最简单的交易。能不能扩展一下,做一些复杂的交易呢?比如债券、股票、房地产、任何其他资产和权利? 当然可以。 了解固定收益业务的朋友,都会对债券交易(多市场、多环节等)心生恐惧,一个环节出问题就能让你生不如死。买过房子的人,也都能体会房产交易的痛苦。
这些交易还是太简单,能不能再抽象一点呢? 最复杂最抽象的交易是什么? 是合同。 合同代表了不信任或者弱信任的双方做交易的标准形式。人们之所以信任合同、尊重合同,因为背后的机制是法律、律师、法庭、文化和道德感。技术天才们已经雄心勃勃,要把合同--这一最复杂的交易形式,也搬到区块链上。这就是所谓智能合约
并查集:将编号分别为1~n的n个对象划分为不相交集合,在每个集合中,选择其中某个元素代表所在集合。在这个集合中,并查集的操作有初始化、合并、查找。 转一个算法组大佬的博客:具体解释见大佬博客 知乎链接:https://zhuanlan.zhihu.com/p/93647900 优化后并查集操作的简
广度优先搜索算法(Breadth-First-Search),是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。如果所有节点均被访问,则算法中止。BFS同样属于盲目搜索。一般用队列数据结构来辅助实现BFS算法。 算法步骤: 首先将根节点放入队列中。
map,一个值对应一个关键值,一一对应,没有重复,可以查找 题目: 代码: #include <iostream> #include <map> #include <cstdio> using namespace std; string name[1001]
结构体排序 在一个结构体有多种属性,根据一定的规则,自定义给他们排序,sort, 内嵌函数模板(这种方法比另外写一个比较函数跑的更快) 大佬博客供上 传送门 struct node{ int id; string name,sex,height; bool operator &l
双指针算法题目 acwing 799.最长连续不重复子序列 acwing 800.数组元素的目标和 acwing 2816.判断子序列 双指针算法常用模板: for (int i = 0, j = 0; i < n; i ++ ) { while (j <
快速幂 typedef long long ll; ll f(ll a,ll b,ll p) { ll ans=1%p; while(b) { if(b&1) ans=ans*a%p; a=a*a%p;
原题链接 高精度加法 加法高精度模板 // C = A + B, A >= 0, B >= 0 vector<int> add(vector<int> &A, vector<int> &B) { if (A.size
如果说比特币是一个巨大的账本,那以太坊则是一个应用平台,人们可以在以太坊上构建应用分布式应用,以太坊是可编程的区块链。 以太坊的基本单元是账号而非交易,任何的资产的转移都是通过账号来激活的,账号分为:·合约账号·外部账号 Tips:在比特币的区块链中,维护这一个简单的交易列表,这一点在以太坊中变得复
原题链接 思路:利用二分找到第一个等于x的数,再利用二分找到最后一个等于x的数, 我的代码: #include <iostream> using namespace std; const int N=1e6+10; int a[N]; int n,q,m,k,t,x; int
算法基础课-快速排序 快速排序采用双指针原理,第一步先确定一个中间变量x(x可以为最左端的数也可以为最右端的数,或者(l+r)/2),一个左指针l 一个右指针r,依次往中间走,左指针检查到大于x的数停下,右指针检查到小于x的数停下,交换两个数,依次重复上述操作,直到扫描完为止,最后采用递归排序x左
Gas是一个非常形象的比喻,在以太坊中,部署的应用运行在区块链的共识引擎是需要消耗”汽油“的,就像是轿车发动那样。它就是Gas。Gas是以太坊生态中提出的一个概念。智能合约在执行的过程中,总是在消耗着算力或是内存。比如要进行一个Sha3操作,比如要存储等。你必须的负担这部分的费用。这部分奖励将会被打
本文源自于个人github仓库:https://github.com/forthespada/InterviewGuidegithub仓库内有PDF版本笔记下载方式,欢迎各位star、fork~立志收录计算机校招、社招面试最全面试八股文,无内鬼来点八股文~ 如果各位发现有些问题的图片上传失败,这是
class Solution: def minimumValueAfterDispel(self, nums): """ NC501 牛牛的消消乐 给定一个数组 nums,其中有 n 个非负整数。你的目的是进行两次操作,
本文源自于个人github仓库:https://github.com/forthespada/InterviewGuidegithub仓库内有PDF版本笔记下载方式,欢迎各位star、fork~立志收录计算机校招、社招面试最全面试八股文,无内鬼来点八股文~ 如果各位发现有些问题的图片上传失败,这是
序言:在入门之前,我们需要先做一些功课来了解产品经理这个职业。一来可以帮助判断自己的兴趣与这个职业的特性是否匹配,也就是弄清楚自己是否真的想要做产品这份工作。要知道,大多数人想要成为一名产品经理都只是因为听说这个职业门槛低,薪资高,完全不考虑自己是否真的具备成为一名产品经理的素质,以导致后面进入这个
python self = input()if self.rfind(' ') == -1: print(len(self))else: i = self.rfind(' ') print(len(self[i+1:]))
/* 学会计算复杂度,20!=2*10^18,int 20*10^8,long 9*10^18 Factorial,递归:调用自身,递归出口 递归模板 */ //使用递归函数 #include <iostream> #include <cstdio> using nam
题目描述 这一天你跟你的n个朋友一起出去玩,在出门前妈妈给了你k块糖果,你决定把这些糖果的一部分分享给你的朋友们。由于你非常热心,所以你希望你的每一个朋友分到的糖果数量都比你要多(严格意义的多,不能相等)。求你最多能吃到多少糖果? 思路: 因为题目要求牛牛的糖果必须严格满足比其他人少,所以我们可以
本人极其普通的本科院校毕业,人也和绝大多数人一样,没进过实验室,没参加过牛气冲天的社团,更没获得过吊炸天的竞赛奖项,最好的也就校三等奖,而且和计算机毫无关系,英语只过了四级。 对!你没看错,就是这么平凡!但是依旧获得了腾讯,字节跳动,360等大中厂的面试,最后拿到了某头号安全公司的offer(没拿到
strlen size_ t strlen ( const char * str ); 字符串以'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包含'\0' )参数指向的字符串必须要以'\0'结束,char arr[]={'a','b','c','d'};这种数
输出一样,但是没有找到提交网站,未进行测试。 #include <iostream> #include <cstdio> #include <stack> using namespace std; int main(){ string s; i
思想:顺序打印:上外圈->右外圈->下外圈->左外圈;注意/难点:->转弯时不要重复打印以及转弯的条件 vector<int> printMatrix(vector<vector<int>> m) { int row_b
/* 模板 分治用递归思想的模板 调用函数!!!!! */ #include <iostream> #include <cstdio> using namespace std; int Fibonacci(int n){ if(n==0){ ret
刷题中遇到的遗漏知识点总结 C语言和C++中,赋值语句的返回值都是所赋的值。 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句。 fork()函数会把它所在语句以后的语句复制到一个子进程里,单独执行。如果printf函数最后没有"\n",则输出缓
腾讯面试复盘,总结了一下,面试总共是问了七个方面的问题(仅仅是个人面试经历,后台开发岗),包含:数据库、数据结构、JVM、网络、JAVA、分布式、操作系统等七个模块,下面就给大家介绍一下这七个方面的面试问题有哪些~并且针对每一个模块还会分享一些我的学习笔记~ 注意注意:需
感觉晚上的战斗力强点 乘积最小其实就是最外层,这个我们在中学学过的基本不等式就能理解到,当 a=b 时,乘积最大,也就是说a与b靠得越近,乘积越大。 (a+b=k,其中k为常数,求 ab 的最大值) public ArrayList<Integer> FindNumbersWithSu
2021-03-06:go中,公共变量是协程安全吗?赋值操作是原子的吗?为什么? 福哥答案2021-03-06: 这是面试中被问到的。实力有限,真正的答案还不知道。我的想法是a=1是原子操作,a=b不是原子操作。实际开发中,不大可能是a=1这种情况,可以说是协程不安全。 答案1:不是协程安全的,赋值
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a numb
实现包含min函数的栈方法:使用辅助栈用来将栈当前最小值置顶 class Solution {public: stack<int> normal, minval; void push(int value) { normal.push(value);
二叉树 二叉树的遍历 前序遍历:根左右中序遍历:左根右后序遍历:左右根如果把一个算术表达式写为二叉树的形式,那么前序遍历即为波兰表达式,中序遍历即为正常表达式,后序遍历即为逆波兰表达式 二叉树的实现 基于链表结构 二叉搜索树 搜索树的定义是:左子树都比根节点小,右子树都比根节点大,注意没有重复元素按
简介 干道链路是用于交换机之间或交换机与路由器之间互连的物理链路。干道链路传输的数据帧都必须打上Tag,便于设备识别数据帧所属的VLAN。因此一条干道链路可以承载多个VLAN的数据帧。 干道链路可以透传VLAN。换言之,干道链路上,数据帧只会转发,不会发生Tag的添加或剥离。 适用的接口类型 在A
1 暴力遍历 取模,再大都不怕 public String LeftRotateString(String str,int n) { if(str==null || str.length() ==0){ return null; } char [] char
今天复习了一下servlet的相关知识,稍微捡了捡东西。(为什么选牛客网呢,因为绿色好看呀)1.jsp设置绝对路径的方法开始总结(1)request.getContextPath()返回/项目名(2)./是返回上一级,这儿为什么要返回上一级,因为当前访问的是index.jsp,该项在webapp下面
方法:利用辅助栈模拟压栈过程遍历压栈vector,判断当前元素是否与弹出vector,不相等就压栈,继续向前便利压栈vector,但是弹出vector不动;相等就说明当此有出栈弹出,压入栈和弹出vector均向前一步,同时对之前已经压入栈的元素进行判断是否有弹出;最后判断辅助栈是否为空?是:否; c
方法:层序遍历利用队列,将节点按层从左到右入队,之后打印即可; vector<int> PrintFromTopToBottom(TreeNode* root) { if(!root) return vector<int>(); vector<int&g
题目要求“查询在2025年投递简历的每个岗位,每一个月内收到简历的数量和,对应的2026年的同一个月同岗位,收到简历的数量”,即先查询2025年每月简历数,左连接(left join)查询2026年每月简历数: select a.job, date_format(a.date,'%Y-%m')
题目难度: 简单 原题链接 今天继续更新程序员面试金典系列, 大家在公众号 算法精选 里回复 面试金典 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。 示例 1:
#include <bits/stdc++.h> #define IOS std::ios_base::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0); using namespace std; typedef long
公交路线给你一个数组 routes ,表示一系列公交线路,其中每个 routes[i] 表示一条公交线路,第 i 辆公交车将会在上面循环行驶。 例如,路线 routes[0] = [1, 5, 7] 表示第 0 辆公交车会一直按序列 1 -> 5 -> 7 -> 1 ->
1411. 给 N x 3 网格图涂色的方案数你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保相邻格子颜色不同(也就是有相同水平边或者垂直边的格子颜色不同)。 给你网格图的行数 n 。 请你返回给 grid 涂色的方案数。由于答案可能会非常大,请
#include <stdio.h> int main() { double a[12],sum=0; for(int i=0;i<12;i++)
通过递归就行,关键是每一步的下标范围要对准!最好画草图来确认;思路如下:每次先序遍历第一个结点,则该结点为当前子树下的根a,再在中序遍历中找到根a的位置,a的左边是左子树,右边是右子树。然后在通过相同的方式,一次遍历左右子树即可。 /** * Definition for binary tree
题目描述给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。 示例1输入[3,5,1,6,2,0,8,#,#,7,4],5,1返回值3 解法 // 解法: 递归(后序遍历框架) // 终止条件:1. 越过叶节点,直接返回null;
这道题目其实就是读了串之后,按照相应规律输出就好了,刚好试试最近学的 数奇偶的判断方法 #include <bits/stdc++.h> using namespace std; int main() { string s1, s2; int size = -1;
两个环,一个是 arrayHelper 维护的遍历真实数组的环,一个是 countOfChild 报数的环 //有两个环,这两个环会搞混,这样就蒙了, 有一个一直向前的指针 i ,这个是遍历数组的,只和n有关系,然后还有一个与m有关的环计数器,主要是表演就是她,每次环到了时候要做很多的工作
一、接口测试介绍 接口是什么?API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。 程序内部接口:提供给系统内部方法与方法之间,模块与模块之间的交互接口,比如bbs系统,有登录模块,发帖模块等等,要发帖必
因为题目中说只能一次买卖,其实我们需要最大的就是找到一个最小值,买入,再在最大的地方卖出。所以我们需要有一个变量,一直不断的更新最小值,然后把整个序列中做一次遍历,最大值就是 当天的价格- 最小值,以及之前的最大值(前一天的dp)进行比较,就能得到最大值了。 /** * * @param
之前在牛客写过几篇关于内推、求职、简历的文章,反响还不错,联系我的人也挺多。具体可看: https://blog.nowcoder.net/n/36c77e36aeb34995a78bf401ddf9ba48 https://blog.nowcoder.net
TreeNode* Mirror(TreeNode* pRoot) { // write code here if(!pRoot) return nullptr; queue<TreeNode*> q; q.push(pRo
扫一扫,把题目装进口袋
扫描二维码,进入QQ群
扫描二维码,关注牛客网公众号