目录
C现在是,学术时间 (I)
题目分析:
D现在是,学术时间 (II)
题目分析:
E 鸡算几何
知识点:
F鸡玩炸蛋人
题目分析:
G鸡格线
知识点:
线段树:
题目分析:
K本题主要考察了dp
题目分析:
L本题主要考察了运气
知识点:
题目分析:
M本题主要考察了找规律
题目分析:
C现在是,学术时间 (I)
登录—专业IT笔试面试备考平台_牛客网
题目分析:
不进行重新分配的话是最优的
题目中明确指出:
该教授发表的所有论文中,有至少H篇论文的引用量大于等于H
每篇论文有一个引用量,这个引用量是固定的,故等于0的就不能选择,相当于这篇文章应该被舍
)
故只要这篇论文的引用量不为0就可以给每位教授一人分布一篇文章(实际上只要统计引用量非0的论文篇数即可,而每位教授又只有一篇故只要引用量非0即可发布因为非0的引用量一定>=1。
#include
using namespace std;
const int N=1e6+10;
int t,n,a[N],ans;
int main()
{
cin>>t;
while(t--)
{
ans=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
ans++;
}
cout<
D现在是,学术时间 (II)
登录—专业IT笔试面试备考平台_牛客网
题目分析:
题目所求就是其(交集/并集)的最大值
#include
using namespace std;
int t,x,y,xp,yp;
double s1,s2,ans,h;
int main()
{
cin>>t;
while(t--)
{
cin>>x>>y>>xp>>yp;
if(xp<=x&&yp<=y)
{
s1=max(xp,x-xp)*max(yp,y-yp);
s2=x*y;
ans=s1*1.0/s2;
}
else if(xp<=x&&yp>=y)
{
h=max(xp,x-xp);
s1=h*y;
s2=x*y-s1+yp*h;
ans=s1*1.0/s2;
}
else if(xp>=x&&yp<=y)
{
h=max(yp,y-yp);
s1=h*x;
s2=x*y-s1+xp*h;
ans=s1*1.0/s2;
}
else if(xp>=x&&yp>=y)
{
s1=x*y;
s2=xp*yp;
ans=s1*1.0/s2;
}
printf("%0.9lf\n",ans);
}
return 0;
}
E 鸡算几何
登录—专业IT笔试面试备考平台_牛客网
知识点:
注:精度问题
考虑比较AB和BC长度时使用整数而非浮点数比较,或在ABC和DEF进行匹配时使用较大的
eps(如1e-5,注意这里使用较小的如1e-9等eps反而可能爆炸)(很可能本来相等的一组线段因为定义过于严格从而变得不相等)
F鸡玩炸蛋人
登录—专业IT笔试面试备考平台_牛客网
题目分析:
分类讨论一下:
1.如果没有任何一个连通块内有蛋
那么说明任意起点终点都可以满足要求因为只要移动不用下蛋
2.如果只一个连通块中有蛋
那么说明我的起点和终点得放在这个连通块内所以任意挑这个连通块的两个点就行
3.如果有超过一个连通块中有蛋
因为各个连通块是不互相连通的那么必然不可能从一个连通块走到另一个连通块也就是不可能跨连通块下蛋也就是说此方案无解
只要有蛋就说明经过了
#include
using namespace std;
const int N=1e5+10;
long long n,m,id,ans,u,v,a[N],p[N],cnt[N];
int find(int x)
{
if(x!=p[x])p[x]=find(p[x]);
return p[x];
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
p[i]=i;
}
while(m--)
{
cin>>u>>v;
p[find(u)]=find(v);
}
int id=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(a[i])//判是不是蛋存在于两个连通块内
{ //id表示第一次遍历到蛋的时候蛋所在的连通块
if(id&&id!=find(i))//如果这次遍历到蛋发现不在这个连通块内了
{ //说明这个有两个连通块有蛋
cout<<0; //就是第三种情况
return 0; //输出0
}
id=find(i);
}
cnt[find(i)]++;
}
for(int i=1;i<=n;i++)
{
if(id==0||i==id)//i==id简单理解为i==find(i),id==0就是没有任何连通块有蛋的情况,没有蛋的时候每个根节点都要统计
ans+=cnt[i]*cnt[i];//有蛋就统计那一个根节点
}
cout<
G鸡格线
登录—专业IT笔试面试备考平台_牛客网
知识点:
线段树:
概念:
线段树是一种二叉树,广义上也被归类为二叉搜索树,对于区间的维护修改和查询时间复杂度优化为log级别
具体操作:
对于一个区间我们让它平均的划分为两个区间,两个区间又各自划分为两个区间,直达划分到仅有一个数据的区间,每个区间存放一个或多个我们需要的数据,比如可以表示区间的和或者是这个区间的最大或最小值,我们用树的形式来存放这些数据便构成了一棵二叉树,而这种存放区间数据的二叉树我们称之为线段树
线段树的维护:
小区间更新大区间(线段树是平衡二叉树)
线段树使用的局限性:
问题需要满足:区间加法(因为这样才能将大问题化为子问题解决)
区间加法:对于[L,R]的区间,它的答案可以由[L,M]和[M+1,R]的答案合并求出(M为区间中点)
满足的问题:区间求和,区间最大最小值等
不满足的问题:区间的众数,区间最长连续问题,最长不下降问题等
线段树解决问题的步骤:
1.建树
2.单点修改/区间修改(区间修改后的查询会用到
3.区间查询
建树:
以堆的方式存储数据
注意:
线段树的数组要开到4*n
单点修改:
修改数列中下标为i的数据,从根节点向下深搜
如果当前节点的左儿子的区间[L,R]包含了i,也就是L<=i<=R,就访问左儿子,否则就访问右儿子,直到L=R也就是只包含这个数据的节点就可以修改它,不要忘了将包含此数据的大区间的值更新
如果要查询的区间完全覆盖当前区间直接返回当前区间的值
如果查询区间和左儿子有交集搜索左儿子
如果查询区间和右儿子有交集搜索右儿子
最后合并处理两边查询的数据
区间修改:
如果按照常规思路乡下递归遍历所有节点一一修改时间复杂度和暴力处理相差无几
此时可以用到lazy标记:
将此区间标记,表示这个 区间的值已经更新,但它的子区间却没有更新,更新的信息就是标记里存的值
区间修改步骤:
如果要修改的区间完全覆盖当前区间直接更新这个区间,打上lazy标记
如果没有完全覆盖,且当前区间有lazy标记,先下传lazy标记到子区间,再清楚当前区间的lazy标记
如果修改区间和左儿子有交集搜索左儿子
如果修改区间和右儿子有交集搜素右儿子
最后将当前区间的值更新
区间修改后的区间查询:
如果要查询的区间完全覆盖当前区间,直接返回当前区间的值
如果没有被完全包含,下穿lazy标记
如果查询区间和左儿子有交集,搜索左儿子
如果查询区间和右儿子有交集,搜索右儿子
最后合并处理两边查询的数据
代码模板:
注:对于修改一个数之类的操作一般不需要lazy 标记,一般lazy标记用于整个区间
u表示每个数的编号,mid为区间端点值
定义线段树中的结构体:
struct node
{
int l,r;
int v; //区间[l,r]中的最大值
}tr[N*4]; //注意要开[N*4]的区间范围
建立线段树:
void build(int u,int l,int r)//u:当前节点的编号 L:当前区间的左端点 r:当前区间的右端点
{
tr[u]={l,r}; //当前节点的左右儿子分别为l和r
if(l==r)return;//如果是叶节点直接return
int mid=l+r>>1;//不是叶节点求一下当前区间的中点是多少
build(u<<1,l,mid),build((u<<1)+1,mid+1,r);//递归建立左右区间(左儿子所在区间u*2,
} //右儿子所在区间为u*2+1
由子节点的信息来计算父节点的信息:(用于回溯时的更新)
void pushup(int u)
{
tr[u].v=max(tr[u<<1].v,tr[(u<<1)+1].v);//父节点的最大值为左右儿子的最大值取一个max
}
查询操作:(此处为查询区间中的v)
int query(int u,int l,int r)//u:表示当前线段树的端点 l,r:表示我们查询的区间
{
if(tr[u].l>=l&&tr[u].r<=r)return tr[u].v;//树中节点,已经被完全包含在[l,r]中了
int mid=tr[u].l+tr[u].r>>1;
int v=0;
if(l<=mid)v=query(u<<1,l,r); //如果和左边有交集
if(r>mid)v=max(v,query((u<<1)+1,l,r));//如果和右边有交集
return v;
}
查询区间的最大子段和:
此时定义的结构体为:
struct node
{
int l,r;
int tmax; //最大连续子段和
int lmax; //最大前缀和
int rmax; //最大后缀和
int sum; //区间和
}tr[N*4];
横跨左右子区间的最大子段和=max
(左儿子的最大字段和,右儿子的最大字段和,左子区间的最大后缀+右子区间的最大前缀)
void pushup(node &u,node &l,node &r)
{
u.sum=l.sum+r.sum;
u.lmax=max(l.lmax,l.sum+r.lmax);
u.rmax=max(r.rmax,r.sum+l.rmax);
u.tmax=max(max(l.tmax,r.tmax),l.rmax+r.lamx);
}
修改操作:
void modify(int u,int x,int v)
{
if(tr[u].l==x&&tr[u].r==x)tr[u].v=v;//找到叶节点直接修改即可
else //说明当前节点不是叶节点,判断往左右哪边递归
{
int mid=tr[u].l+tr[u].r>>1;
if(x<=mid)modify(u<<1,x,v);
else modify((u<<1)+1,x,v);
pushup(u);//此处为回溯是更新父节点,因为上方进行了更新子节点的操作
}
}
下方lazy标记!!!
区间:
核心5函数:
1.pushup
2.pushdown
3.build
4.modify
5.query
结构体:
struct node
{
int l,r;
LL sum,lazy;
}tr[4*N];
由子节点的信息来计算父节点的信息:(由下至上对应pushdown用于回溯时的更新)
void pushup(int u)
{
tr[u].sum=tr[u<<1].sum+tr[(u<<1)+1].sum;
}
下传lazy标记pushdown:(由下至上对应pushup)
void pushdown(int u)
{
auto &root=tr[u],&left=tr[u<<1],&right=tr[(u<<1)+1];
if(root.lazy)
{
//下传lazy标记,更新子树
left.lazy+=root.lazy,left.sum+=(LL)(left.r-lrft.l+1)*root.lazy;
right.lazy+=root.lazy,right.sum+=(LL)(right.r-right.l+1)*root.lazy;
//删除父节点lazy标记
root.lazy=0;
}
}
建立线段树:
void build(int u,int l,int r)
{
if(l==r)tr[u]={l,r,a[l],0};
else
{
tr[u]={l,r};
int mid=l+r>>1;
build(u<<1,l,mid),build((u<<1)+1,mid+1,r);
pushup(u);
}
}
修改区间:
void modify(int u,int l,int r,int v)
{
if(l<=tr[u].l&&tr[u].r<=r)
{
tr[u].sum+=(tr[u].r-tr[u].l+1)*v;
tr[u].lazy+=v;
}
else
{
pushdown(u);//下传lazy标记
in mid=tr[u].l+tr[u].r>>1;
if(l<=mid)modify(u<<1,l,r,v);//修改
if(r>mid)modify((u<<1)+1,l,r,v);
pushup(u);//通过子区间的修改更新父节点
}
}
查询区间:
LL query(int u,int l,int r)
{
if(l<=tr[u].l&&tr[u].r<=r)return tr[u].sum;
pushdown(u);
int mid=tr[u].l+tr[u].r>>1;
LL v=0;
if(l<=mid)v=query(u<<1,l,r);
if(r>mid)v+=query((u<<1)+1,l,r);
return v;
}
题目分析:
注意此题:不用lazy标记!!!维护的是区间的最值
当a[i]=0,99,100时经过操作它们的值不会发生变化
所以维护最小值大于99 最大值小于100就行
对于初始的0(其他数不会变为0)可直接让最值为99或100(不影响)
#include
using namespace std;
typedef long long LL;
const int N=1e5+10;
int a[N],n,m,op,l,r,k;
struct node
{
int l,r;
LL sum;
int maxx,minn;
}tr[4*N];
int f(int x)
{
return round(10*sqrt(x));
}
void pushup(int u)
{
tr[u].minn=min(tr[u<<1].minn,tr[(u<<1)+1].minn);
tr[u].maxx=max(tr[u<<1].maxx,tr[(u<<1)+1].maxx);
tr[u].sum=tr[u<<1].sum+tr[(u<<1)+1].sum;
}
void build(int u,int l,int r)
{
tr[u]={l,r};
if(l==r)
{
tr[u].maxx=tr[u].minn=tr[u].sum=a[l];
if(a[l]==0)tr[u].maxx=tr[u].minn=99;
return;
}
int mid=l+r>>1;
build(u<<1,l,mid),build((u<<1)+1,mid+1,r);
pushup(u);
}
void modify(int u,int l,int r,int k)
{
if(tr[u].maxx<=100&&tr[u].minn>=99)return;
if(tr[u].l>r||tr[u].r>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
build(1,1,n);
while(m--)
{
cin>>op;
if(op==1)
{
cin>>l>>r>>k;
modify(1,l,r,k);
}
else
{
cout<
K本题主要考察了dp
https://ac.nowcoder.com/acm/contest/46800/K
题目分析:
#include
using namespace std;
const int N=1e6+10;
int n,m,a[N],cnt,sum,ans;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
if(i%3==1)
{
a[i]=1;
cnt++;
}
if(i%3==2)a[i]=0;
if(i%3==0)a[i]=0;
}
int x=n;
while(cnt1)ans++;
}
cout<
L本题主要考察了运气
https://ac.nowcoder.com/acm/contest/46800/L
知识点:
算各概率乘次数求和就是期望
题目分析:
由上方定义可以类比出:
第二次猜中是在第一次没猜中的情况下
第i次猜中的前提都是前i-1次没猜中
第一次没猜中 0.8概率(4/5)
第二次猜中 0.25概率(1/5)
第二次猜中的前提是第一次没猜中
由题知:
先猜在哪个组 再一个一个猜
#include
using namespace std;
int main()
{
cout<<32;
return 0;
}
M本题主要考察了找规律
https://ac.nowcoder.com/acm/contest/46800/M
题目分析:
重点在于理解状态转移方程
k是第i个人分到的仙贝数,上一次是第i-1人,分出去了j-k个仙贝,后面加的是好感度,
分的k个/手里有的个数(总共的m-分出的(j-m))
#include
using namespace std;
const int N=1e3+10;
int n,m;
double dp[N][N];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=0;j<=m;j++)
{
for(int k=0;k<=j;k++)
{
dp[i][j]=max(dp[i][j],dp[i-1][j-k]+k*1.0/(m-(j-k)));
}
}
}
printf("%0.9lf",dp[n][m]);
return 0;
}
你可能感兴趣的:(算法,c++)
机器学习与深度学习间关系与区别
ℒℴѵℯ心·动ꦿ໊ོ꫞
人工智能 学习 深度学习 python
一、机器学习概述定义机器学习(MachineLearning,ML)是一种通过数据驱动的方法,利用统计学和计算算法来训练模型,使计算机能够从数据中学习并自动进行预测或决策。机器学习通过分析大量数据样本,识别其中的模式和规律,从而对新的数据进行判断。其核心在于通过训练过程,让模型不断优化和提升其预测准确性。主要类型1.监督学习(SupervisedLearning)监督学习是指在训练数据集中包含输入
c++ 的iostream 和 c++的stdio的区别和联系
黄卷青灯77
c++ 算法 开发语言 iostream stdio
在C++中,iostream和C语言的stdio.h都是用于处理输入输出的库,但它们在设计、用法和功能上有许多不同。以下是两者的区别和联系:区别1.编程风格iostream(C++风格):C++标准库中的输入输出流类库,支持面向对象的输入输出操作。典型用法是cin(输入)和cout(输出),使用>操作符来处理数据。更加类型安全,支持用户自定义类型的输入输出。#includeintmain(){in
Goolge earth studio 进阶4——路径修改与平滑
陟彼高冈yu
Google earth studio 进阶教程 旅游
如果我们希望在大约中途时获得更多的城市鸟瞰视角。可以将相机拖动到这里并创建一个新的关键帧。camera_target_clip_7EarthStudio会自动平滑我们的路径,所以当我们通过这个关键帧时,不是一个生硬的角度,而是一个平滑的曲线。camera_target_clip_8路径上有贝塞尔控制手柄,允许我们调整路径的形状。右键单击,我们可以选择“平滑路径”,这是默认的自动平滑算法,或者我们可
基于社交网络算法优化的二维最大熵图像分割
智能算法研学社(Jack旭)
智能优化算法应用 图像分割 算法 php 开发语言
智能优化算法应用:基于社交网络优化的二维最大熵图像阈值分割-附代码文章目录智能优化算法应用:基于社交网络优化的二维最大熵图像阈值分割-附代码1.前言2.二维最大熵阈值分割原理3.基于社交网络优化的多阈值分割4.算法结果:5.参考文献:6.Matlab代码摘要:本文介绍基于最大熵的图像分割,并且应用社交网络算法进行阈值寻优。1.前言阅读此文章前,请阅读《图像分割:直方图区域划分及信息统计介绍》htt
121. 买卖股票的最佳时机
薄荷糖的味道_fb40
给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例1:输入:[7,1,5,3,6,4]输出:5解释:在第2天(股票价格=1)的时候买入,在第5天(股票价格=6)的时候卖出,最大利润=6-1=5。注意利润不能是7-1=6,因为卖出价格需要大于买入价格。示例2:输入:
【JS】执行时长(100分) |思路参考+代码解析(C++)
l939035548
JS 算法 数据结构 c++
题目为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务。假设GPU最多一次执行n个任务,一次执行耗时1秒,在保证GPU不空闲情况下,最少需要多长时间执行完成。题目输入第一个参数为GPU一次最多执行的任务个数,取值范围[1,10000]第二个参数为任务数组长度,取值范围[1,10000]第三个参数为任务数组,数字范围
每日算法&面试题,大厂特训二十八天——第二十天(树)
肥学
⚡算法题⚡面试题每日精进 java 算法 数据结构
目录标题导读算法特训二十八天面试题点击直接资料领取导读肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。上一期我们完成了动态规划二十一天现在我们进行下一项对各类算法进行二十八天的一个小总结。还在等什么快来一起肥学进行二十八天挑战吧!!特别介绍小白练手专栏,适合刚入手的新人欢迎订阅编程小白进阶python有趣练手项目里面包括了像《机器人尬聊》《恶搞程序》这样的有趣文章
回溯算法-重新安排行程
chirou_
算法 数据结构 图论 c++ 图搜索
leetcode332.重新安排行程这题我还没自己ac过,只能现在凭着刚学完的热乎劲把我对题解的理解记下来。本题我认为对数据结构的考察比较多,用什么数据结构去存数据,去读取数据,都是很重要的。classSolution{private:unordered_map>targets;boolbacktracking(intticketNum,vector&result){//1.确定参数和返回值//2
基于CODESYS的多轴运动控制程序框架:逻辑与运动控制分离,快速开发灵活操作
GPJnCrbBdl
python 开发语言
基于codesys开发的多轴运动控制程序框架,将逻辑与运动控制分离,将单轴控制封装成功能块,对该功能块的操作包含了所有的单轴控制(归零、点动、相对定位、绝对定位、设置当前位置、伺服模式切换等等)。程序框架由主程序按照状态调用分归零模式、手动模式、自动模式、故障模式,程序状态的跳转都已完成,只需要根据不同的工艺要求完成所需的动作即可。变量的声明、地址的规划都严格按照C++的标准定义,能帮助开发者快速
C++ | Leetcode C++题解之第409题最长回文串
Ddddddd_158
经验分享 C++ Leetcode 题解
题目:题解:classSolution{public:intlongestPalindrome(strings){unordered_mapcount;intans=0;for(charc:s)++count[c];for(autop:count){intv=p.second;ans+=v/2*2;if(v%2==1andans%2==0)++ans;}returnans;}};
C++菜鸟教程 - 从入门到精通 第二节
DreamByte
c++
一.上节课的补充(数据类型)1.前言继上节课,我们主要讲解了输入,输出和运算符,我们现在来补充一下数据类型的知识上节课遗漏了这个知识点,非常的抱歉顺便说一下,博主要上高中了,更新会慢,2-4周更新一次对了,正好赶上中秋节,小编跟大家说一句:中秋节快乐!2.int类型上节课,我们其实只用了int类型int类型,是整数类型,它们存贮的是整数,不能存小数(浮点数)定义变量的方式很简单inta;//定义一
Faiss:高效相似性搜索与聚类的利器
网络·魚
大数据 faiss
Faiss是一个针对大规模向量集合的相似性搜索库,由FacebookAIResearch开发。它提供了一系列高效的算法和数据结构,用于加速向量之间的相似性搜索,特别是在大规模数据集上。本文将介绍Faiss的原理、核心功能以及如何在实际项目中使用它。Faiss原理:近似最近邻搜索:Faiss的核心功能之一是近似最近邻搜索,它能够高效地在大规模数据集中找到与给定查询向量最相似的向量。这种搜索是近似的,
insert into select 主键自增_mybatis拦截器实现主键自动生成
weixin_39521651
insert into select 主键自增 mybatis delete返回值 mybatis insert返回主键 mybatis insert返回对象 mybatis plus insert返回主键 mybatis plus 插入生成id
前言前阵子和朋友聊天,他说他们项目有个需求,要实现主键自动生成,不想每次新增的时候,都手动设置主键。于是我就问他,那你们数据库表设置主键自动递增不就得了。他的回答是他们项目目前的id都是采用雪花算法来生成,因此为了项目稳定性,不会切换id的生成方式。朋友问我有没有什么实现思路,他们公司的orm框架是mybatis,我就建议他说,不然让你老大把mybatis切换成mybatis-plus。mybat
k均值聚类算法考试例题_k均值算法(k均值聚类算法计算题)
寻找你83497
k均值聚类算法考试例题
?算法:第一步:选K个初始聚类中心,z1(1),z2(1),…,zK(1),其中括号内的序号为寻找聚类中心的迭代运算的次序号。聚类中心的向量值可任意设定,例如可选开始的K个.k均值聚类:---------一种硬聚类算法,隶属度只有两个取值0或1,提出的基本根据是“类内误差平方和最小化”准则;模糊的c均值聚类算法:--------一种模糊聚类算法,是.K均值聚类算法是先随机选取K个对象作为初始的聚类
Python实现简单的机器学习算法
master_chenchengg
python python 办公效率 python开发 IT
Python实现简单的机器学习算法开篇:初探机器学习的奇妙之旅搭建环境:一切从安装开始必备工具箱第一步:安装Anaconda和JupyterNotebook小贴士:如何配置Python环境变量算法初体验:从零开始的Python机器学习线性回归:让数据说话数据准备:从哪里找数据编码实战:Python实现线性回归模型评估:如何判断模型好坏逻辑回归:从分类开始理论入门:什么是逻辑回归代码实现:使用skl
推荐算法_隐语义-梯度下降
_feivirus_
算法 机器学习和数学 推荐算法 机器学习 隐语义
importnumpyasnp1.模型实现"""inputrate_matrix:M行N列的评分矩阵,值为P*Q.P:初始化用户特征矩阵M*K.Q:初始化物品特征矩阵K*N.latent_feature_cnt:隐特征的向量个数max_iteration:最大迭代次数alpha:步长lamda:正则化系数output分解之后的P和Q"""defLFM_grad_desc(rate_matrix,l
K近邻算法_分类鸢尾花数据集
_feivirus_
算法 机器学习和数学 分类 机器学习 K近邻
importnumpyasnpimportpandasaspdfromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportaccuracy_score1.数据预处理iris=load_iris()df=pd.DataFrame(data=ir
Java面试题精选:消息队列(二)
芒果不是芒
Java面试题精选 java kafka
一、Kafka的特性1.消息持久化:消息存储在磁盘,所以消息不会丢失2.高吞吐量:可以轻松实现单机百万级别的并发3.扩展性:扩展性强,还是动态扩展4.多客户端支持:支持多种语言(Java、C、C++、GO、)5.KafkaStreams(一个天生的流处理):在双十一或者销售大屏就会用到这种流处理。使用KafkaStreams可以快速的把销售额统计出来6.安全机制:Kafka进行生产或者消费的时候会
数据结构 | 栈和队列
TT-Kun
数据结构与算法 数据结构 栈 队列 C语言
文章目录栈和队列1.栈:后进先出(LIFO)的数据结构1.1概念与结构1.2栈的实现2.队列:先进先出(FIFO)的数据结构2.1概念与结构2.2队列的实现3.栈和队列算法题3.1有效的括号3.2用队列实现栈3.3用栈实现队列3.4设计循环队列结论栈和队列在计算机科学中,栈和队列是两种基本且重要的数据结构,它们在处理数据存储和访问顺序方面有着独特的规则和应用。本文将详细介绍栈和队列的概念、结构、实
[Python] 数据结构 详解及代码
AIAdvocate
算法 python 数据结构 链表
今日内容大纲介绍数据结构介绍列表链表1.数据结构和算法简介程序大白话翻译,程序=数据结构+算法数据结构指的是存储,组织数据的方式.算法指的是为了解决实际业务问题而思考思路和方法,就叫:算法.2.算法的5大特性介绍算法具有独立性算法是解决问题的思路和方式,最重要的是思维,而不是语言,其(算法)可以通过多种语言进行演绎.5大特性有输入,需要传入1或者多个参数有输出,需要返回1个或者多个结果有穷性,执行
Python算法L5:贪心算法
小熊同学哦
Python算法 算法 python 贪心算法
Python贪心算法简介目录Python贪心算法简介贪心算法的基本步骤贪心算法的适用场景经典贪心算法问题1.**零钱兑换问题**2.**区间调度问题**3.**背包问题**贪心算法的优缺点优点:缺点:结语贪心算法(GreedyAlgorithm)是一种在每一步选择中都采取当前最优或最优解的算法。它的核心思想是,在保证每一步局部最优的情况下,希望通过贪心选择达到全局最优解。虽然贪心算法并不总能得到全
C++ lambda闭包消除类成员变量
barbyQAQ
c++ c++ java 算法
原文链接:https://blog.csdn.net/qq_51470638/article/details/142151502一、背景在面向对象编程时,常常要添加类成员变量。然而类成员一旦多了之后,也会带来干扰。拿到一个类,一看成员变量好几十个,就问你怕不怕?二、解决思路可以借助函数式编程思想,来消除一些不必要的类成员变量。三、实例举个例子:classClassA{public:...intfu
2021 CCF 非专业级别软件能力认证第一轮(CSP-J1)入门级C++语言试题 (第三大题:完善程序 代码)
mmz1207
c++ csp
最近有一段时间没更新了,在准备CSP考试,请大家见谅。(1)有n个人围成一个圈,依次标号0到n-1。从0号开始,依次0,1,0,1...交替报数,报到一的人离开,直至圈中剩最后一个人。求最后剩下的人的编号。#includeusingnamespacestd;intf[1000010];intmain(){intn;cin>>n;inti=0,cnt=0,p=0;while(cnt#includeu
《 C++ 修炼全景指南:九 》打破编程瓶颈!掌握二叉搜索树的高效实现与技巧
Lenyiin
C++ 修炼全景指南 技术指南 c++ 算法 stl
摘要本文详细探讨了二叉搜索树(BinarySearchTree,BST)的核心概念和技术细节,包括插入、查找、删除、遍历等基本操作,并结合实际代码演示了如何实现这些功能。文章深入分析了二叉搜索树的性能优势及其时间复杂度,同时介绍了前驱、后继的查找方法等高级功能。通过自定义实现的二叉搜索树类,读者能够掌握其实际应用,此外,文章还建议进一步扩展为平衡树(如AVL树、红黑树)以优化极端情况下的性能退化。
20个新手学习c++必会的程序 输出*三角形、杨辉三角等(附代码)
X_StarX
c++ 学习 算法 大学生 开发语言 数据结构
示例1:HelloWorld#includeusingnamespacestd;intmain(){coutusingnamespacestd;intmain(){inta=5;intb=10;intsum=a+b;coutusingnamespacestd;intfactorial(intn){if(nusingnamespacestd;voidprintFibonacci(intn){intt
C++八股
Petrichorzncu
八股总结 c++ 开发语言
这里写目录标题C++内存管理C++的构造函数,复制构造函数,和析构函数深复制与浅复制:构造函数和析构函数哪个能写成虚函数,为什么?C++数据结构内存排列结构体和类占用的内存:==虚函数和虚表的原理==虚函数虚表(Vtable)虚函数和虚表的实现细节==内存泄漏==指针的工作原理函数的传值和传址new和delete与malloc和freeC++内存区域划分C++11新特性C++常见新特性==智能指针
【2022 CCF 非专业级别软件能力认证第一轮(CSP-J1)入门级 C++语言试题及解析】
汉子萌萌哒
CCF noi 算法 数据结构 c++
一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)1.以下哪种功能没有涉及C++语言的面向对象特性支持:()。A.C++中调用printf函数B.C++中调用用户定义的类成员函数C.C++中构造一个class或structD.C++中构造来源于同一基类的多个派生类题目解析【解析】正确答案:AC++基础知识,面向对象和类有关,类又涉及父类、子类、继承、派生等关系,printf
《 C++ 修炼全景指南:十 》自平衡的艺术:深入了解 AVL 树的核心原理与实现
Lenyiin
C++ 修炼全景指南 技术指南 c++ 数据结构 stl
摘要本文深入探讨了AVL树(自平衡二叉搜索树)的概念、特点以及实现细节。我们首先介绍了AVL树的基本原理,并详细分析了其四种旋转操作,包括左旋、右旋、左右双旋和右左双旋,阐述了它们在保持树平衡中的重要作用。接着,本文从头到尾详细描述了AVL树的插入、删除和查找操作,配合完整的代码实现和详尽的注释,使读者能够全面理解这些操作的执行过程。此外,我们还提供了AVL树的遍历方法,包括中序、前序和后序遍历,
【RabbitMQ 项目】服务端:数据管理模块之绑定管理
月夜星辉雪
rabbitmq 分布式
文章目录一.编写思路二.代码实践一.编写思路定义绑定信息类交换机名称队列名称绑定关键字:交换机的路由交换算法中会用到没有是否持久化的标志,因为绑定是否持久化取决于交换机和队列是否持久化,只有它们都持久化时绑定才需要持久化。绑定就好像一根绳子,两端连接着交换机和队列,当一方不存在,它就没有存在的必要了定义绑定持久化类构造函数:如果数据库文件不存在则创建,打开数据库,创建binding_table插入
JAVA学习笔记之23种设计模式学习
victorfreedom
Java技术 设计模式 android java 常用设计模式
博主最近买了《设计模式》这本书来学习,无奈这本书是以C++语言为基础进行说明,整个学习流程下来效率不是很高,虽然有的设计模式通俗易懂,但感觉还是没有充分的掌握了所有的设计模式。于是博主百度了一番,发现有大神写过了这方面的问题,于是博主迅速拿来学习。一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器
[黑洞与暗粒子]没有光的世界
comsci
无论是相对论还是其它现代物理学,都显然有个缺陷,那就是必须有光才能够计算
但是,我相信,在我们的世界和宇宙平面中,肯定存在没有光的世界....
那么,在没有光的世界,光子和其它粒子的规律无法被应用和考察,那么以光速为核心的
&nbs
jQuery Lazy Load 图片延迟加载
aijuans
jquery
基于 jQuery 的图片延迟加载插件,在用户滚动页面到图片之后才进行加载。
对于有较多的图片的网页,使用图片延迟加载,能有效的提高页面加载速度。
版本:
jQuery v1.4.4+
jQuery Lazy Load v1.7.2
注意事项:
需要真正实现图片延迟加载,必须将真实图片地址写在 data-original 属性中。若 src
使用Jodd的优点
Kai_Ge
jodd
1. 简化和统一 controller ,抛弃 extends SimpleFormController ,统一使用 implements Controller 的方式。
2. 简化 JSP 页面的 bind, 不需要一个字段一个字段的绑定。
3. 对 bean 没有任何要求,可以使用任意的 bean 做为 formBean。
使用方法简介
jpa Query转hibernate Query
120153216
Hibernate
public List<Map> getMapList(String hql,
Map map) {
org.hibernate.Query jpaQuery = entityManager.createQuery(hql);
if (null != map) {
for (String parameter : map.keySet()) {
jp
Django_Python3添加MySQL/MariaDB支持
2002wmj
mariaDB
现状
首先,
[email protected] 中默认的引擎为 django.db.backends.mysql 。但是在Python3中如果这样写的话,会发现 django.db.backends.mysql 依赖 MySQLdb[5] ,而 MySQLdb 又不兼容 Python3 于是要找一种新的方式来继续使用MySQL。 MySQL官方的方案
首先据MySQL文档[3]说,自从MySQL
在SQLSERVER中查找消耗IO最多的SQL
357029540
SQL Server
返回做IO数目最多的50条语句以及它们的执行计划。
select top 50
(total_logical_reads/execution_count) as avg_logical_reads,
(total_logical_writes/execution_count) as avg_logical_writes,
(tot
spring UnChecked 异常 官方定义!
7454103
spring
如果你接触过spring的 事物管理!那么你必须明白 spring的 非捕获异常! 即 unchecked 异常! 因为 spring 默认这类异常事物自动回滚!!
public static boolean isCheckedException(Throwable ex)
{
return !(ex instanceof RuntimeExcep
mongoDB 入门指南、示例
adminjun
java mongodb 操作
一、准备工作
1、 下载mongoDB
下载地址:http://www.mongodb.org/downloads
选择合适你的版本
相关文档:http://www.mongodb.org/display/DOCS/Tutorial
2、 安装mongoDB
A、 不解压模式:
将下载下来的mongoDB-xxx.zip打开,找到bin目录,运行mongod.exe就可以启动服务,默
CUDA 5 Release Candidate Now Available
aijuans
CUDA
The CUDA 5 Release Candidate is now available at http://developer.nvidia.com/<wbr></wbr>cuda/cuda-pre-production. Now applicable to a broader set of algorithms, CUDA 5 has advanced fe
Essential Studio for WinRT网格控件测评
Axiba
JavaScript html5
Essential Studio for WinRT界面控件包含了商业平板应用程序开发中所需的所有控件,如市场上运行速度最快的grid 和chart、地图、RDL报表查看器、丰富的文本查看器及图表等等。同时,该控件还包含了一组独特的库,用于从WinRT应用程序中生成Excel、Word以及PDF格式的文件。此文将对其另外一个强大的控件——网格控件进行专门的测评详述。
网格控件功能
1、
java 获取windows系统安装的证书或证书链
bewithme
windows
有时需要获取windows系统安装的证书或证书链,比如说你要通过证书来创建java的密钥库 。
有关证书链的解释可以查看此处 。
public static void main(String[] args) {
SunMSCAPI providerMSCAPI = new SunMSCAPI();
S
NoSQL数据库之Redis数据库管理(set类型和zset类型)
bijian1013
redis 数据库 NoSQL
4.sets类型
Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是O(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。
sadd:向名称为key的set中添加元
异常捕获何时用Exception,何时用Throwable
bingyingao
用Exception的情况
try {
//可能发生空指针、数组溢出等异常
} catch (Exception e) {
 
【Kafka四】Kakfa伪分布式安装
bit1129
kafka
在http://bit1129.iteye.com/blog/2174791一文中,实现了单Kafka服务器的安装,在Kafka中,每个Kafka服务器称为一个broker。本文简单介绍下,在单机环境下Kafka的伪分布式安装和测试验证 1. 安装步骤
Kafka伪分布式安装的思路跟Zookeeper的伪分布式安装思路完全一样,不过比Zookeeper稍微简单些(不
Project Euler
bookjovi
haskell
Project Euler是个数学问题求解网站,网站设计的很有意思,有很多problem,在未提交正确答案前不能查看problem的overview,也不能查看关于problem的discussion thread,只能看到现在problem已经被多少人解决了,人数越多往往代表问题越容易。
看看problem 1吧:
Add all the natural num
Java-Collections Framework学习与总结-ArrayDeque
BrokenDreams
Collections
表、栈和队列是三种基本的数据结构,前面总结的ArrayList和LinkedList可以作为任意一种数据结构来使用,当然由于实现方式的不同,操作的效率也会不同。
这篇要看一下java.util.ArrayDeque。从命名上看
读《研磨设计模式》-代码笔记-装饰模式-Decorator
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.Fi
Maven学习(一)
chenyu19891124
Maven私服
学习一门技术和工具总得花费一段时间,5月底6月初自己学习了一些工具,maven+Hudson+nexus的搭建,对于maven以前只是听说,顺便再自己的电脑上搭建了一个maven环境,但是完全不了解maven这一强大的构建工具,还有ant也是一个构建工具,但ant就没有maven那么的简单方便,其实简单点说maven是一个运用命令行就能完成构建,测试,打包,发布一系列功
[原创]JWFD工作流引擎设计----节点匹配搜索算法(用于初步解决条件异步汇聚问题) 补充
comsci
算法 工作 PHP 搜索引擎 嵌入式
本文主要介绍在JWFD工作流引擎设计中遇到的一个实际问题的解决方案,请参考我的博文"带条件选择的并行汇聚路由问题"中图例A2描述的情况(http://comsci.iteye.com/blog/339756),我现在把我对图例A2的一个解决方案公布出来,请大家多指点
节点匹配搜索算法(用于解决标准对称流程图条件汇聚点运行控制参数的算法)
需要解决的问题:已知分支
Linux中用shell获取昨天、明天或多天前的日期
daizj
linux shell 上几年 昨天 获取上几个月
在Linux中可以通过date命令获取昨天、明天、上个月、下个月、上一年和下一年
# 获取昨天
date -d 'yesterday' # 或 date -d 'last day'
# 获取明天
date -d 'tomorrow' # 或 date -d 'next day'
# 获取上个月
date -d 'last month'
#
我所理解的云计算
dongwei_6688
云计算
在刚开始接触到一个概念时,人们往往都会去探寻这个概念的含义,以达到对其有一个感性的认知,在Wikipedia上关于“云计算”是这么定义的,它说:
Cloud computing is a phrase used to describe a variety of computing co
YII CMenu配置
dcj3sjt126com
yii
Adding id and class names to CMenu
We use the id and htmlOptions to accomplish this. Watch.
//in your view
$this->widget('zii.widgets.CMenu', array(
'id'=>'myMenu',
'items'=>$this-&g
设计模式之静态代理与动态代理
come_for_dream
设计模式
静态代理与动态代理
代理模式是java开发中用到的相对比较多的设计模式,其中的思想就是主业务和相关业务分离。所谓的代理设计就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。比如我们在进行删除操作的时候需要检验一下用户是否登陆,我们可以删除看成主业务,而把检验用户是否登陆看成其相关业务
【转】理解Javascript 系列
gcc2ge
JavaScript
理解Javascript_13_执行模型详解
摘要: 在《理解Javascript_12_执行模型浅析》一文中,我们初步的了解了执行上下文与作用域的概念,那么这一篇将深入分析执行上下文的构建过程,了解执行上下文、函数对象、作用域三者之间的关系。函数执行环境简单的代码:当调用say方法时,第一步是创建其执行环境,在创建执行环境的过程中,会按照定义的先后顺序完成一系列操作:1.首先会创建一个
Subsets II
hcx2013
set
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note:
Elements in a subset must be in non-descending order.
The solution set must not conta
Spring4.1新特性——Spring缓存框架增强
jinnianshilongnian
spring4
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
shell嵌套expect执行命令
liyonghui160com
一直都想把expect的操作写到bash脚本里,这样就不用我再写两个脚本来执行了,搞了一下午终于有点小成就,给大家看看吧.
系统:centos 5.x
1.先安装expect
yum -y install expect
2.脚本内容:
cat auto_svn.sh
#!/bin/bash
Linux实用命令整理
pda158
linux
0. 基本命令 linux 基本命令整理
1. 压缩 解压 tar -zcvf a.tar.gz a #把a压缩成a.tar.gz tar -zxvf a.tar.gz #把a.tar.gz解压成a
2. vim小结 2.1 vim替换 :m,ns/word_1/word_2/gc  
独立开发人员通向成功的29个小贴士
shoothao
独立开发
概述:本文收集了关于独立开发人员通向成功需要注意的一些东西,对于具体的每个贴士的注解有兴趣的朋友可以查看下面标注的原文地址。
明白你从事独立开发的原因和目的。
保持坚持制定计划的好习惯。
万事开头难,第一份订单是关键。
培养多元化业务技能。
提供卓越的服务和品质。
谨小慎微。
营销是必备技能。
学会组织,有条理的工作才是最有效率的。
“独立
JAVA中堆栈和内存分配原理
uule
java
1、栈、堆
1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3. 堆:存放所有new出来的对象。4. 静态域:存放静态成员(static定义的)5. 常量池:存放字符串常量和基本类型常量(public static f