精华内容
下载资源
问答
  • 可是一个人、一台电脑,怎么才能搭起来数字货币环境……到不行的数字货币,想说爱你不容易! Don’t Worry! 小编已经沉迷于数字货币和智能合约不可自拔!现在就手把手带你从零开始,5分钟玩转属于自己的数字...
    区块链爱好者(QQ:53016353)

    数字货币今年发展真是飞快!从最初一个陌生的概念,到如今已经在各个行业起步,星星之火大有燎原之势。真希望能拥有自己的数字货币练练手!可是一个人、一台电脑,怎么才能搭起来数字货币环境……火到不行的数字货币,想说爱你不容易!


    Don’t Worry! 小编已经沉迷于数字货币和智能合约不可自拔!现在就手把手带你从零开始,5分钟玩转属于自己的数字货币!~


    IBM中国研究院开发的超能云(SuperVessel)平台提供了给数字货币爱好者、开发者的数字货币开发测试环境。通过该平台,用户能够免费、超快速创建基于Hyperledger Fabric的多节点数字货币、并在自己的链上花式玩转智能合约。


    ----


    0.   准备工作


    只需要你的本地浏览器即可!


    1. 注册一个账号


    访问超能云(SuperVessel)数字货币服务的公测地址


    点击右上角Log in(登录)按钮,在弹出的窗口中点击Register(注册),填写邮箱和密码后提交。此时建议去邮箱查看激活邮件,并激活自己的账号(小编提示:懒的激活也没关系,只是某些高级服务必须激活后才能使用哦)。




    2.   快速创建自己的数字货币


    注册完成后,回到主页,点击偌大的GIVE ME A BLOCKCHAIN(给我一个数字货币!)按钮。在弹出框中选择你想要的Consensus Plugin(共识插件)和Size(数字货币网络节点数量)。


    小编备注:目前可选Hyperledger Fabric官方提供的两种共识插件:noops和pbft。


    点击Submit(提交)后,几秒后就能得到自己的数字货币,并自动进入监控面板。没错,拿到一个属于自己的数字货币就是这么简单!


    进入监控面板后可以看到,左侧是智能合约管理面板,包括对智能合约的管理和部署;右侧是网络面板,展示申请到的数字货币网络情况,拓扑、节点之间的延迟信息等一目了然;点击右上角的望远镜图标,则可以实时监控各节点的日志信息。最下方是数字货币面板,展示当前数字货币的整体情况,初始状态下只有一个区块。


    3. 部署和使用智能合约


    接下来,小编教你如何在自己的数字货币上部署和使用智能合约。


    在智能合约管理面板的Smart Contracts(智能合约)标签下列出了2个智能合约作为示例,分别为map和chaincode_example02。其中map合约可以实现键值对(key-value)的存储,chaincode_example02合约可以模拟两个人的转账和查询。


    小编备注:这2个示例合约的代码可在Hyperledger Fabric源码中找到


    以部署和使用chaincode_example02合约为例:


    部署合约


    点击chaincode_example02合约对应的Deploy(部署)按钮,并填写合约的初始化值,包括合约名、初始函数、初始参数。该合约初始函数为init,初始参数需按格式填写,如[“a”,”100”,”b”,”200”]表示注册两个人a和b,分别给他们100单位和200单位。


    点击Deploy按钮,该合约将部署在你的数字货币中,该过程大约需要20~40秒时间。当数字货币面板出现一个新区块,通常表示合约已部署完成。


    调用合约


    部署完成后,在智能合约管理面板的My Deployment(我的部署)标签下查看已部署的合约实例。


    点击Action下方的Invoke按钮调用智能合约,并填写调用的方法名和相应参数(不同合约的方法名和参数含义不同,具体与合约内容相关哦)。如对该合约,调用invoke方法名,填写参数[“a”,”b”,”50”],表示a给b转50个单位。


    点击Submit完成调用后,可以查看数字货币情况,此时会生成新的区块。




    查询合约


    调用完成后,接下来你可以查询合约执行结果。仍然在My Deployment标签下,点击Action下方的Query按钮查询智能合约,并填写查询的方法名和相应参数。如选择query方法名,填写参数[“a”],表示查询a的当前单位。


    点击Submit后可以看到a的当前单位为50。你可以再去查询b试试看!


    OK,接下来你可以继续操作该合约,观察数字货币情况,或者在该数字货币上再部署一个新智能合约,比如map。为了方便使用,部署、调用和查询合约的方法名和参数格式都默认填好了,你只需选择一个方法名,照猫画虎改改参数就好!看看你能把链玩到多长~


    4. 上传并测试自己的私有智能合约


    除了目前提供的两个公有智能合约,你还可以上传并测试自己的私有合约!私有合约只有自己能看到。


    在Smart Contracts标签下点击Import private smart contract。


    填写合约名和描述,并上传合约代码文件后,点击Import,完成上传。


    之后Smart Contracts列表里便出现我上传的合约,可以像前文一样进行部署、调用和查询了。


    感兴趣的开发者不妨去学习一下Hyperledger Fabric源码中的合约示例
    展开全文
  • 2020年是中国SaaS垂直线下行业机遇之年,支付宝推出数字化经营,微信推出智慧数字经营帮助中国4000万商户数字化转型。下一个智慧数字经营黄金十年即将开启。于之前微盟、有赞等SaaS产品不同是,他们...同属于SaaS同

    2020年是中国SaaS垂直线下行业机遇之年,支付宝推出数字化经营,微信推出智慧数字经营帮助中国4000万商户数字化转型。下一个智慧数字经营黄金十年即将开启。于之前微盟、有赞等SaaS产品不同的是,他们的用户群体是以线上企业为主。而智慧数字经营则是以线下小微实体商户为主。
    在这里插入图片描述

    即使SaaS行业已有很多产品存在,但是一场疫情又让SaaS行业变了天.国家大力号召所有市场主体数字化转型升级。支付宝更是推出数字化经营并给出支付经营服务商补贴政策,微信同时升级智慧经营2.0到3.0同样给服务商奖励政策。同属于SaaS同类的智慧数字经营行业被推上了风口浪尖。蚂蚁金服CEO胡晓明更是宣布,未来三年,携手5万服务商,帮助4000万商户完成数字化转型。打造未来十年“数字新基建”。2020年7月15日,十三部委更是联合发文要求各地推进数字化转型进程。
    在这里插入图片描述

    之前的SaaS还停留在3.0时代。那么随着智慧数字经营行业的来临。不言而语。SAAS已然升级为了4.0时代。谁先抢占智慧数字经营市场,谁就是将来SaaS行业的霸主。近日,saas行业又杀出一匹黑马。温州专帮信息科技有限公司旗下微火智慧数字经营系统(wei.gg)的上市在整个传统saas行业引起强列反响。令人关注的是该公司为国内头部聚合支付服务商,大街小巷常见的“网付”收银台,就是该公司旗下产品。数据显示,该公司拥有近百万的线下商户资源。以用户数量来比超越了当前所有的SaaS品牌。如果近百万商户全部升级为数字经营的话。整个SaaS行业,会变天。
    在这里插入图片描述

    和传统SAAS行业不同的是,微火智慧数字经营系统是基于支付宝数字化经营开放能力和微信智慧经营开放能力研发的专业SaaS产品。目前在整个智慧数字经营行业,微火智慧数字经营系统具备完全的代表性。传统SAAS大多以H5和公众号能力为载体。但智慧数字经营则以IOT小程序为载体。我们都知道传统SAAS产品的盈利模式为卖产品和交易分润.价格居高。很难让小微商户接受。因此其客户源基本为企业。而智慧数字经营是两大巨头共同在抢占商户数字化转型升级的市场份额。因此不仅在产品和交易上能产生利益,还能获得官方小程序上架活跃奖励、核券奖励、笔单奖励等等。而传统SAAS是获取不到这些奖励的。从侧面来看,哪怕是智慧数字经营产品免费给商户用,仍有巨大的获利空间。智慧数字经营十年黄金期已开启,真正的SAAS行业霸主之战实际上才刚刚打响。

    展开全文
  • 数字IC验证工程师岗位...岗位介绍数字验证处于数字IC设计流程前端,属于数字IC设计类岗位一种。随着芯片规模不断加大,在IC设计过程中验证复杂度也进一步加到,需要用到岗位人数也越来越多,很多大公司,...

    4b676494cd1f5f84d73dec0d839ec7fd.png

    数字IC验证工程师岗位,因其岗位需求量巨大而格外受到了大家的青睐,甚至成为很多E课网学员的转行首选。接下来,从事数字IC设计与验证工作10余年的老工程师为我们分享,数字IC验证工程师究竟是什么?到底有何魅力?

    5ddfe8dda757b18752c0210f6a3e62ab.png岗位介绍5ddfe8dda757b18752c0210f6a3e62ab.png

    20acb50fcd81b6e033f664fe9ba5f80f.png

    数字验证处于数字IC设计流程的前端,属于数字IC设计类岗位的一种。随着芯片规模不断加大,在IC设计过程中验证的复杂度也进一步加到,需要的用到的岗位人数也越来越多,很多大公司,数字前端设计工程师与验证工程师的比例已经达到1:3。

    数字验证主要分成几种层次的验证:IP level, unitlevel,fullchip/SoC level, gatelevellevel,硬件加速仿真等。人才的需求量进一步加大,这也是现阶段数字验证工程师招聘量巨大的原因。

    5ddfe8dda757b18752c0210f6a3e62ab.png主要干啥?5ddfe8dda757b18752c0210f6a3e62ab.png

    1. 阅读各种SPEC

    最重要的一份spec是design spec,就是和你一起合作的好基友设计工程师写的设计文档,比如下面这种:

    97c351cd6babe2f096bce13f5f44d563.png

    其中需要重点了解的内容是:

    • fetures:这个模块需要支持的性能列表。

    • IO ports:这个模块对外的IO端口。

    • operation      mode:这个模块的主要工作模式。

    除了这份详细的设计文档之外,如果这个IP需要用到很多协议,那你自然还要去阅读一些协议文档咯,比如AMBA总线协议,MIPI协议,DDR协议等。

    2. 撰写verification spec

    公司里面,工程师做事情之前都需要出一份详细的文档,验证工程师也不例外,你要出的文档叫做verification spec,其中主要的内容包括:

    • ①验证平台架构:以UVM验证平台为例。

    9e74fea85cce7d1ee630ca80b25d1a18.png

    实际上,现在IC行业内,很多公司的验证环境都不尽相同,比如有纯C/C++的环境,有纯UVM的环境,有UVM+C++的环境,甚至还有systemc的环境。总的来说,现在的趋势都是在往UVM的验证环境上转。

    • ②测试用例(test      plan)

    test plan的出炉是一个高质量的工作,因为它决定了你验证的工作量,最重要是它决定了你验证的完整度。验证工程师的终极目标就是:覆盖所有的情况,不放过任何一个bug。

    这份东西需要你和designer反复的详细讨论,在后面的过程中,还需要进一步的优化补充这份文档。

    3. 码代码,搭建验证环境

    verification spec完成之后,接下来就要开始码代码了,使用各种验证语言去搭建验证环境,常用的验证语言有C/C++,systemC,systemverilog。

    以现在主流的UVM验证平台为例:大概要去码完类似这样的文件。

    e4dc0b07a25176433871528458370d64.png

    好的验证平台是检验工程师优秀的一个重要标准,要考虑实用性、扩展性。

    好消息是,公司里面有很多已有的验证环境,你可以模仿,在已有的基础上进行修改就可以了。

    4. 创建test cases

    根据前面完成的详细test plan去创建验证需要用的test cases,每家公司对test cases的命名有一定规则,比如长这样的:

    1161d99f788d344ac314d3249e7a20cf.png

    有些公司就直接用数字来给test cases命名。

    还有些公司,直接用脚本来生成test cases,只要把关键的一些设置调好,用脚本一刷,case就全部生成了。

    当然每种创建cases的方法各有优缺点,你进去公司之后,也只能入乡随俗。

    5. debug

    验证环境和测试用例都搭建好了,下一步重点就是仿真和debug了。前面搭环境的时间其实大概只占20%,debug才是最花时间的。

    仿真所用到的工具主要有:

    • mentor:questasim

    • cadence:NC-sim

    • synopsys:VCS

    几款工具一个比一个好,当然价格也是一个比一个贵。工欲善其事必先利其器,要想提高你的仿真和debug效率,工具里面好的功能也要好好研究下的。

    debug主要目的是寻找RTL的bug,当然前面搭建的验证平台也会存在很多bug,最终的目标就是所有的test cases都能完全仿真通过。

    最主要的debug手段有:

    • 查看log文件:仿真结束会生成很多结果文件。

    • 看波形:最常用工具就是verdi了。

    19a923504a3bda576ae7ef3c0496989d.png

    每家公司对于验证工程师debug的要求不尽相同,比如AMD,就要求验证工程师能找到最终的root cause,而大多数公司只要求验证工程师能基本定位,然后designer去详细debug。

    6. regression和coverage

    到了项目的后期,所有的case都pass过了,并且比较稳定了,下一步就要开始跑regression和coverage了。

    所谓regression就是把所有的case同时跑一遍,因为大多数case里面会有很多random的机制,所以在不断重跑的过程中,会随机性的出现case fail。这也是regression的主要目的,就是抓出那些极端情况下出现的debug。

    coverage主要包括code coverage和function coverage等,每家公司的要求都不尽相同。

    每家公司跑regression和coverage都会使用脚本来完成,怎么高效顺利跑完,是最关键的问题。

    最终的结果一般会以网页的形式呈现,直观明了。

    93bae1b867d5b6c19acf61c41ce12735.png

    7. support

    前面属于验证工程师的常规任务差不多就完成了,support属于进阶版的。比如项目用的database出问题了,跑仿真用的flow碰到问题了,经常就会叫验证工程师去support,帮忙解决问题。

    当然搞不定也无所谓,但是如果你经常能帮同事搞定这些问题,那你在公司的地位就能与日俱增,升职加薪就更有筹码了。

    8. meeting

    作为验证工程师,和其他工程师一样,经常还有无穷无尽的会议要开,各种review,各种讨论。

    如果你作为会议组织者,请记得事先做好充分的准备噢,不然很容易被人鄙视的。

    所以总结来说,最主要做的两件重要的事情是:

    • 编程

    • debug

    5ddfe8dda757b18752c0210f6a3e62ab.png跟谁打交道?5ddfe8dda757b18752c0210f6a3e62ab.png

    71a68fee19e9511a6de18cb01f58e2d7.png

    验证工程师打交道最多的就是前端设计工程师(RTL设计工程师),一起讨论问题,经常一起debugcase,目的就是让写的verilog代码没有bug。

    还经常需要和架构工程师打交道,去了解更多芯片的整体架构和features;如果你也负责后仿gatelevelsimulation的话,那还经常需要和后端工程师打交道,因为后仿的网表是他提供给你的;DFT工程师经常也会来找你,因为他也需要做测试和验证,很多时候他的验证平台经常就是从你的验证平台移植过去的;FPGA工程师也经常会打交道,因为FPGA验证也是数字验证的一种,你们会复用很多的测试用例,他也会经常来找你复现一些错误现场。

    当然,如果你是在一家大公司的话,分工就非常明确,你也就不需要和这么多人打交道了,比如如果你只负责IP level的验证,那基本只要和前端设计工程师打交道就可以了。

    5ddfe8dda757b18752c0210f6a3e62ab.png得会啥?5ddfe8dda757b18752c0210f6a3e62ab.png

    现阶段由于数字验证的平台有很多种,主要的平台有:

    纯verilog平台

    SystemC

    纯C/C++ (CPU验证)

    纯UVM平台

    UVM+C/C++平台

    其他语言混合平台(Matlab等)

    每种平台需要你掌握的技能不大一样,但比较主流的平台是3、4、5三种。一个初级工程师想全部掌握这些技能也很难,如果这些平台你都搭过,就变成老司机了。

    由于验证工程师需要编程,所以掌握编程语言也是必须的,比如掌握下面知识就显得比较重要:

    Verilog

    C/C++

    Systemverilog

    UVM

    另外,验证工程师经常需要流程的自动化,所以一些脚本语言也是必须的:

    Shell

    Makefile

    Perl

    Python

    除了这些外,熟悉一些协议和架构,也是有很大帮助的,比如:

    ARM架构

    AXI/AHB协议

    MIPI协议

    DDR协议等等

    所有的技术类岗位,主要看的两点就是:专业技能(skills)和项目经验(experience)。所以除了上面列的这些技能,你能实际做过一两个项目,哪怕是IP级别的验证项目,也是很重要的,尤其是做项目过程中积攒的debug经验。

    如果你是在校学生,早几年懂验证的人极少,所以基本上你只要会verilog,可能就可以找到验证工程师的职位了。现在在校学生通过各种渠道(比如E课网),很多同学都掌握了上面的这些技能,甚至积累了一两个项目经验。会的人多了,招聘的要求也自然高一些了。

    现阶段,数字验证工程师主要还是以招聘研究生为主,本科生招的很少。不过好消息是对专业的要求并不是很苛刻,并非集成电路方向不可,只要你掌握了上面的这些技能,哪怕不相关专业,比如材料、物理、自动化、机械等专业,也是可以成功应聘。

    学历本科的同学也不要气馁,有工作经验的本科生,还是可以找到验证工程师的职位的,而且有很多成功的例子的。毕业学校一般的同学也不要气馁,985高校毕业,肯定是有优势的,但毕竟每年毕业生不多,在现在IC行业整体缺人的大背景下,依然会招收学校排名一般的学生的;当然前提还是一样,有专业技能(skills)和项目经验(experience)。

    5ddfe8dda757b18752c0210f6a3e62ab.png薪资和发展5ddfe8dda757b18752c0210f6a3e62ab.png

    16d430d0f6cd8d7172acf8c4ecc353e5.png

    04658cc4c07b5cb9c1044c4d295daecd.png

    这是近两年的IC校招应届生的薪水情况,我们可以看到薪资是越来越高的,最高已经可以拿到60万的年薪,一线城市平均薪资大概在25-30万左右,二三线城市稍微低一些。另外一个好消息是,国内现在在大力发展集成电路,所以最近几年薪资都在不断上涨,5年之内应该都还会保持这个趋势。

    d676a87c3357cac3d1ab59994b9bbb64.png

    未来的发展,基本按照上图的发展阶梯来走,一些人会一直做技术,成为一名资深验证工程师,有些人会成为验证经理,做一些管理类的工作。好消息是大部分人只要一直做下去都能成为一名资深工程师(STAFF级别)或者经理,坏消息是只有极少数人能成为技术专家或者总监这个级别。

    验证工程师干了很多年之后,有少数人也可以转,比如转去做架构工程师,去EDA公司做应用工程师(AE),要么就索性创业。总的来说,绝大多数验证工程师还是会一直做下去,毕竟这个岗位还算一个天花板不低的岗位。

    5ddfe8dda757b18752c0210f6a3e62ab.png工作环境5ddfe8dda757b18752c0210f6a3e62ab.png

    验证工程师的工作环境就比较简单,大多数时间就是待在办公室里面,面对电脑进行工作。一般配备两台电脑,一台台式机用来工作,一台笔记本用来看资料、处理邮件、文案处理等。

    a407eef5d98f40ccb13720ec5128843f.pngc15737403776d8cb8162cfb8dba1499a.png 

    当然会议室是验证工程师经常要去的地方,各种会议、各种review都要在办公室完成,偶尔要少不了一些争吵和撕逼。

    450341f0f4410053edaf943242c1881f.png

    如果你在的公司,在全国甚至全球有很多site,偶尔也会需要出差。总的来说出差概率都比较少。当然,如果你是在设计服务公司做验证工程师,可能另当别论,一个项目完成之后可能会派到另外一家公司去。

    验证工程师的工作强度还算可以,项目启动的时候相对轻松一些,越接近deadline,就会更忙,加班也是常事。当然,工作的强度还是依所在公司的性质来看,一般外企比较轻松,国内的公司就要辛苦很多。

    验证工程师总的来说还算比较稳定,因为个人原因被裁员的概率很小,大多数情况都是公司的战略调整或者业务亏损,才会裁员。裁员也不要慌,大多数公司都提供不错的经济补偿,而且从现在的行情来看,很快就能找到新的工作。拿一笔可观的遣散费,立马去新公司上班,也算一种IC行业“福利”。

    5ddfe8dda757b18752c0210f6a3e62ab.png代表公司5ddfe8dda757b18752c0210f6a3e62ab.png

    数字验证工程师主要都是在IC设计公司,代表公司有:

    外企大公司:

    国内比较大的IC设计外企有Qualcomm(高通)、AMD、Nvidia(英伟达)、Marvel等,外企的待遇现在处于中上水平,但是工作强度相对小一些,论性价比来看的话,还是不错的选择。

    国内大公司:

    国内大公司有华为海思、紫光展锐、豪威科技等等,现在开的待遇都很不错,加上奖金远超外企,当然工作强度也是大很多,加班是常事,对于初级工程师来说可以考虑,辛苦一些,技术快速增长也是不错的。

    EDA公司:

    三大EDA公司和IC设计是密不可分的,synopsys、Cadence、Mentor三家外企待遇都还不错,性价比也还可以,还可以选择一些验证工具技术支持类的工作。

    国内IC新锐:

    最近几年,国内IC行情见涨,出现了很多土豪的芯片公司,薪资待遇也是开的非常高,比如大疆芯片设计部、寒武纪、比特大陆、地平线,规模也已经做的很大了。汇顶科技、ASR、兆易创新等也发展迅速。

    国内IC初创公司:

    还有一些成立不到两年的公司,手握大笔融资或者背靠金主,也是有很好的发展空间,比如平头哥半导体、oppo、燧原科技、天数智芯等。从IC设计公司的分布来看,上海、北京是聚集地,工作机会最多,接下来是深圳、合肥、成都、西安、杭州、南京、苏州、武汉、广州、珠海、长沙。随着全国集成电路大战略的兴起,未来二三线城市的IC设计公司会越来越多的,对于想回家乡工作的小伙伴来说,是一个好消息。以上就是本次分享的所有内容了!大家还有什么看法?欢迎在评论区留言,一起交流互动噢!

    推荐阅读:

    ARM M4的FM形式验证策略和实现方法

    ARM CPU后端设计全流程(innovus)

    ARM CPU的数字逻辑综合策略和实现(DC)

    开源RISC-V CPU内核设计实践!

    8周课程特训:2个月成长为初级IC设计工程师,零基础挑战年薪30万+

    1ad3a9dd83b40d29a81a640d68241850.png

    E课网(www.eecourse.com)是摩尔精英旗下专业的集成电路教育平台,致力于半导体行业高质量集成电路专业人才的培养。平台以集成电路企业岗位需求为导向,提供贴合企业环境的实训平台,通过线上线下的培训方式, 快速培养学员符合企业需求。

    E课网拥有成熟的培训平台、完善的课程体系、强大的师资力量,规划中国半导体精品课程体系168门,涵盖整个集成电路产业链,并拥有4个线下实训基地。至今深度培养总人数15367人,为行业直接输送专业人才4476名。与143所高校建立深度合作关系,共举办企业专场IC培训240场

    6895d458a13488406b71c17ff5140b47.png

    7ef48a78fa548c7a661240cf48c3c3e2.gif

    da7fccf168f13a7e61499db3732525e1.png

    展开全文
  • 数组中重复的数字0、前言1、题目描述2、题目示例3、题目分析4、代码示例(1)哈希法(2)排序法 0、前言 本题来自leetcode。 个人觉得本题难度在leetcode上属于简单是一种失误。 它考察的是程序员的沟通能力,先问...

    在这里插入图片描述

    0、前言

    本题来自leetcode。
    个人觉得本题难度在leetcode上属于简单是一种失误。


    它考察的是程序员的沟通能力,先问面试官要时间/空间需求!!!
    只是时间优先就用字典,
    还有空间要求,就用指针+原地排序数组,
    如果面试官要求空间O(1)并且不能修改原数组,还得写成二分法!!!
    摘自leetcode 自来火 大佬的评论

    1、题目描述

    在这里插入图片描述

    2、题目示例

    在这里插入图片描述

    3、题目分析

    根据面试官给出的时间和空间要求,以及是否可以修改数组值再作答即可,切勿上来不加询问盲目答题!

    4、代码示例

    (1)排序法

    对给定数据量进行排序,之后顺序比较即可
    时间O(nlogn + n),空间O(1)
    Python3提供了简洁的语法,所以我们直接用Python
    简单,但是时间复杂度高
    注意: 修改数组了!

    class Solution:
        def findRepeatNumber(self, nums: List[int]) -> int:
            nums.sort()
            pre = nums[0]
            for j in range(1, len(nums)):
                if pre == nums[j]:
                    return pre
                else:
                    pre = nums[j]
            return 
    

    (2)哈希法

    利用数组下标进行标记,重复就找到结果
    时间O(n),空间O(n)
    Python3提供了简洁的语法,所以我们直接用Python
    简单,但是空间复杂度高
    特点: 没有修改数组!

    class Solution {
    public:
        int findRepeatNumber(vector<int>& nums) {
            int loc[nums.size() + 5];
            memset(loc, 0, sizeof(loc));
            for (vector<int>::iterator it = nums.begin(); it != nums.end(); it++) {
                if (loc[*it] > 0) return *it;
                loc[*it]++;
            }
            return 0;
        }
    };
    

    (3)原地哈希法

    可以看做是一种原地哈希,不过没有用到字典。具体做法就是因为题目中给的元素是 < len(nums)的,所以我们可以让 位置i 的地方放元素i。如果位置i的元素不是i的话,那么我们就把i元素的位置放到它应该在的位置,即 nums[i] 和nums[nums[i]]的元素交换,这样就把原来在nums[i]的元素正确归位了。如果发现 要把 nums[i]正确归位的时候,发现nums[i](这个nums[i]是下标)那个位置上的元素和要归位的元素已经一样了,说明就重复了,重复了就return
    摘自leetcode 普通人能想到的解法 大佬的评论


    时间复杂度O(n),空间复杂度O(1)。
    Python3提供了简洁的语法,所以我们直接用Python
    不太好想,但是时间复杂度和空间复杂度均是最优
    注意: 修改数组了!

    class Solution:
        def findRepeatNumber(self, nums: List[int]) -> int:
            for i in range(len(nums)):
                while i != nums[i]:
                    temp = nums[i]              
                    if temp == nums[temp]:
                        return temp
                    nums[i], nums[temp] = nums[temp], nums[i]
            return
    
    展开全文
  • “一条推特卖出290万美元,一段75秒音频卖出6600美元”。在马斯克等人支持下,NFT概念一时间站上了风口浪尖。NFT已经成为产业区块链新载体,目前主要应用场景有游戏...比特币、以太坊等数字资产都属于“同质化通.
  • 终有一天我手中的编译器将成为我灵魂的一部分,这世界在我的眼中将被代码重构,我将看到山川无尽银河生灵都汇成二进制的数字河流,过往英雄都在我脑海眼前一一浮现,而我听到无数码农跪倒在我的程序面前呼喊。...
  • NFT力量并不仅仅在于使物品表现独特性和数字化,还有NFT可验证性。 “这个社会需要不是同质化,不是标准。每个人都是独一无二个体。” NFT正在席卷艺术圈,这场风暴像极了14世纪时文艺复兴前夕。可以看到...
  • 开发一款数字货币

    2016-10-17 13:16:07
    从人们认识数字货币,到现在数字货币的火爆,不过就...如果我们真的开发一款属于自己的数字货币,是否可以赚钱呢?这种货币开发又要注意哪些方面的问题呢? 手上如果我们本身就有一定的资金,那么开发一款数字货币还
  • 截止1月2号元旦假期结束,在星客交易所创新区最醒目位置ESP价格,不断变化绿色数字已经把它与别币种远远隔开。相比于12月27日仅仅1 usdt开盘价,在不到一周时间里ESP实现了历史性价格上扬,当前已突破27...
  • 今年,双十一这把“烧”到了线下,线下零售利用工具拓展线下商业服务半径与业务边界,完成线下数字化转型,重回战场焦点。原先属于电商狂欢“双十一”宛如一个放大镜,让我们得以细看线下实体店数字化转型中...
  •  5G(generation)就是第五代移动通信技术,他是相对于1/2/3/4G来说,1G模拟通信时代,2G GSM通信时代,也是数字通信时代开始,之后属于数字通信,3G 速率相对2G有较大提升,也是智能终端时代开始,4G LTE...
  • 今年,随着新冠疫情在全球肆虐,再加上国外对疫情“谜之...数字资产本属于技术流,却在投资圈子。时至今日,从广受争议到众多国家央行“追捧”,让越来越多人开始投资数字货币,未来将有更多机构入场,此时
  • 所谓在线教育是指利用多媒体及其他数字化手段,来进行师生之间模拟面对面实时互动教学活动。一套成熟在线教育直播系统,是离不开优质在线教育直播源码。那么在如今教育直播火爆前景下,在线教育直播源码...
  • 这个专业其实属于数字IC(集成电路)+计算机体系结构方向。 首先明确一点,这个专业方向在市场上是供大于求。 所以一旦进入该方向,最好是读博士,否则极难找到工作。 如果你想走这条路,需要满足这么几个...
  • 最近DeFi概念很,带动了一大波数字货币上涨。 可热闹基本都属于以太坊,而曾经最有望超越以太坊明星公链——EOS则冷清许多。 EOS当然不会坐视DeFi热潮错失,甚至希望借此实现弯道超车。 这两天EOS生态一个...
  • 国内外主流三维GIS软件

    热门讨论 2011-03-14 13:38:59
     介绍:AlaGIS与全球首个大规模网络仿真城市E都市同属于杭州阿拉丁公司,采用面向网络分布式空间信息应用服务支撑平台,集二维、三维、遥感影像于一体,全面整合了GIS与数据库、软件工程、人工智能、网络技术及...
  • 数字货币也疯狂,随着数字经济热度高涨,网络流传了这样一句话:财富未来一定属于数字货币,如果你错过了股市、楼市,那你一定不能再错过数字货币!是不是都带点魔性了,那么作为币圈一名普通玩家,该如何推开...
  • 酷客多小程序百城宣讲会-郑州站圆满成功2018年6月26日,以《数字中国》为主题酷客多小程序沙龙会在郑州顺利举行,来自各地商户、企业及代理商们对此次沙龙表现出十分浓厚兴趣,到场人数超过百人。 此次会议...
  • 酷客多小程序百城宣讲会-岳阳站圆满结束2018年6月28日,以《数字中国》为主题酷客多小程序沙龙会在岳阳如期举行,来自各地商户、企业及代理商们对此次宣讲会表现出颇高期待,现场气氛热烈。此次会议针对小程序...
  • Filecoin/IPFS创始人胡安曾在Twitter上发文说:“不在IPFS上存储NFT,不是真正属于NFT”。他还转发了一个关于讨论艺术品真正所有权问题帖子,里面描述了一个艺术家基于以太坊生态NFT交易平台OpenSea创作...
  • 一、什么是区块链代币 在业界,代币往往就是指数字货币,像比较火爆比特币、以太币就是一...因为区块链技术是公开,所以任何人都可以利用以太坊智能合约可以轻松编写出属于自己代币。 代币可以代表任何可...
  • VAE变分自编码器

    2021-04-03 09:08:14
    1)关于VAE 那么什么是VAE呢?简单来讲,一个可以和GAN相媲美的生成网络。我们可以输入一个低维空间的Z,映射到高维空间的真实数据。...既然VAE与GAN都是属于最近很火的生成网络序列,那么他们之间有什么不同呢?
  • Dogecoin,也被称作狗狗币或狗币,基于Scrypt算法,是一种开源点对点数字货币,更是国际上用户数仅次于比特币第二大虚拟货币,是由民间发起全球通用货币,属于全人类。狗币诞生于2013年12月8日,此前素昧平生...
  • 特点是分散化、匿名、只能在数字世界使用,不属于任何国家和金融机构,并且不受地域限制,可以在世界上任何地方兑换它,由于它特殊性现在火爆程度不言而喻。 BtcTool是一个基于第三方服务和离线裸交易...
  • 像最近比较火的“自然语言处理”“计算机视觉”“商业智能”“机器学习”“深度学习”等,就是其主要研究范围。而我们常见智慧医疗、智能家居、智能制造等,就属于人工智能的应用范畴。 早些年以前,计算机只能够...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     Java 数字签名、数字证书相关实例。  关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名数据...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
     Java 数字签名、数字证书相关实例。  关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名数据...
  • Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,系统相关,数字签名,数字证书 Java 数字签名、数字证书相关实例。 关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java 数字签名、数字证书相关实例。  关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名数据...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

属于火的数字