AES的完全实现,其中代码编写过程中具有很高的技巧性,同时利用了AES加密结构的特点,实现了AES的快速实现,本人2.5G的电脑在DEV上运行最快可达1.4G/s
2025/1/7 7:11:05 23KB AES 快速实现
1
电脑技巧计算器计算机学习
2025/1/2 3:46:23 81.01MB 电脑技巧 计算机基础 计算器
1
外国人写的一个虚拟示波器,具有多通道,实时动态显示波形功能。
能选择性为曲线添加节点修饰,还能用鼠标对曲线拉框局部放大,更关键的是,代码效率相当高,4通道同时动态跟踪显示曲线,完全无视觉停顿感。
工程是MFC+ATL编写的,ATL跟MFC相似度达到90%以上,只要你对MFC不是很菜,读懂代码完全没问题。
里面有很多C++编程上的技巧,仔细研究,相信你会大有收获。
压缩包附带WTL头文件,解压后包含就行。
2025/1/1 12:56:30 931KB VC++
1
《CabalOnlineUpdaterMaster:登陆器自动更新与补丁制作源码详解》CabalOnline,又称为《惊天动地》,是一款深受玩家喜爱的3D动作角色扮演游戏。
为了保持游戏的稳定运行和功能更新,开发团队通常需要提供一个有效的自动更新系统,以便玩家能够及时获取最新的游戏补丁。
本项目,名为"Cabal-online-updater-master",正是这样一个自动更新程序的源代码,它基于VC++2012开发,并已成功编译,为游戏开发者和爱好者提供了完整的开源解决方案。
一、登陆器自动更新机制登陆器自动更新是游戏客户端启动前的关键步骤,它确保了玩家始终运行的是最新版本的游戏。
Cabal-online-updater-master实现了这一功能,通过检查服务器上的更新文件并与本地版本进行对比,如果发现有新版本,程序会下载并替换旧的文件,保证玩家在下次启动时获得更新后的游戏体验。
这一机制大大降低了用户手动查找和安装更新的繁琐过程,提高了用户体验。
二、补丁制作流程补丁制作是游戏更新的核心部分,它涉及将新的游戏数据或修复内容打包成可下载的文件。
Cabal-online-updater-master中的源码详细解释了如何生成这些补丁。
开发者需要确定哪些文件发生了变化,然后只对这些变动的文件进行打包,减少了更新文件的大小,加快了下载速度。
同时,补丁制作还考虑了文件的校验和,确保更新的准确性。
三、VC++2012技术应用该项目使用了Microsoft的VisualC++2012编译环境,这是一种强大的C++开发工具,支持C++11标准,包含丰富的库函数和调试工具。
VC++2012的使用使得代码更易于管理和维护,同时也能实现高效的性能优化。
源码中的编程实践展示了如何利用C++语言特性来构建高效、稳定的自动更新系统。
四、源码结构与功能模块在解压的"Cabal-online-updater-master"文件夹中,我们可以找到项目的主要组成部分,包括源代码文件(.cpp和.h)、资源文件(如图标和配置文件)以及编译脚本。
源码通常分为以下几个关键模块:1.更新检查模块:负责与服务器通信,获取最新的版本信息。
2.文件下载模块:下载必要的更新文件,可能包含断点续传和错误重试机制。
3.补丁应用模块:解析并应用下载的补丁,更新本地文件。
4.用户界面模块:提供友好的交互界面,展示更新进度和状态。
通过研究这些模块,开发者可以深入理解自动更新系统的架构和工作原理,并可根据需求进行定制化修改。
总结:"Cabal-online-updater-master"项目为游戏开发者提供了一套全面的登陆器自动更新和补丁制作解决方案。
通过阅读和学习源码,不仅可以了解自动更新系统的实现细节,还能掌握VC++2012在实际项目中的应用技巧,对于提升游戏开发能力具有显著帮助。
无论你是初学者还是经验丰富的开发者,这个开源项目都值得你投入时间去研究和探索。
2025/1/1 12:07:14 1.23MB cabal 惊天动地 软件自动更新
1
SAP使用技巧及基本操作培训完整操作手册,这个是HAND汉得公司实施SAP的项目文档
2025/1/1 8:01:06 1.25MB SAP操作 SAP手册 SAP培训 SAP项目
1
.Net精品就业班课程表:1、.Net基础加强(10天)核心技术课程常用数据结构(List、Dictionary、Array)、多态、常用设计模式、反射、常用.net类库、泛型、IO流、委托事件、正则表达式、XML、反射、GC等。
2、数据库开发及ADO.Net(6天)核心技术课程数据库开发基础、MicrosoftSQLServer基础、SQL语言基础、索引、事务、SQL语言高级技术(空值处理、聚合与分组、数据分页、Union、日期函数、类型转换函数、流控函数、表连接、子查询、存储过程、触发器)、数据库设计范式、数据库调优。
ADO.Net(行集、数据集、类型化数据集、SQLHelper、SQL注入漏洞防范、数据绑定)。
3、三层架构MIS项目(5天)查看项目演示功能点本项目基于流行的三层架构(DAL+BLL+UI)。
主要功能点:高安全性的用户管理体系、高安全性的异构系统数据导入导出、拼音检索、复合检索、无限级次数据管理、个性化邮件群发、Excel文件导入导出。
技术点ADO.Net技术应用、SQLServer、MD5安全算法、基于NPOI的Excel文件处理、树状结构数据处理、递归、CodeSmith、代码生成器、三层架构。
项目说明这是一个用WinForm技术实现的系统,传智播客在开课的半个月就安排一个项目,体现了传智播客“项目驱动学习”的先进教学理念。
4、网页开发与JavaScript(7天)查看案例演示核心技术课程HTML基础加强、css(包含Div+CSS布局)、JavaScript、Dom(事件、window对象、document对象、对话框、定时器、粘贴板、动态Dom、跨浏览器兼容性解决方案、JS压缩和CDN、InternetExplorerDeveloperToolbar)、JQuery(JQuery函数、隐式迭代、链式编程、id选择器、tag选择器、CSS选择器、层次选择器、表单选择器、过滤选择器、复合选择器、节点导航、节点操作、样式操作、事件、动画、JQueryCookie、JQueryLive、JQueryUI)。
课程说明CSS、JavaScript是ASP.Net开发的基础,把这些掌握好了就能很轻松的学会ASP.Net;
Dom是实现网页动态效果的技术,在网站越来越个性化年代,招聘企业对应聘者的Dom水平要求非常高;
JQuery是近几年异军突起的JavaScript框架库,几乎成了Web前端开发事实上的标准,大部分企业都是使用JQuery进行Web前端的开发。
学完了这阶段课程,学员将学会开发主流网站的前端效果,比如:焦点图、滚动展示图、网页防复制、网页自定义菜单、WebOS、美女时钟、无刷新评论、评分控件、表格特效、图片悬浮详细信息、微博界面、QQ消息框效果、Div对话框等。
5、ASP.Net开发(12天)核心技术课程自己动手写Web服务器(Socket、多线程)、ashx模式Web开发、ViewState、Cookie、Session、Http协议、Web开发基本原则、XSS漏洞防范、Request对象、Response对象、Server对象、虚拟路径、HttpHandler深入、ASP.Net生命周期、WebForm原理、服务端基本控件、WebShell漏洞防范、HTML服务端控件、验证框架、MasterPage、数据绑定控件(ObjectDataSource、列表类绑定控件、GridView、FormView、ListView、Repeater、高效率分页)、CKEditor、Membership、缓存、互联网调优(SEO、HTML压缩、页面静态化、移除ViewState、表单GET化)、URL重写、错误处理、AJAX(XMLHTTP、JQueryAJAX、Json)、全局文件、HttpHandler与HttpModule、IIS配置。
课程说明由于微软对ASP.Net进行高度封装,因此ASP.Net入门非常简单,开发人员不需要了解HTML、JavaScript、Http协议也可以快速开发出一个Web系统,正因为如此,社会上充斥着大量这样的“拖控件的开发人员”,使得很多Java、PHP等语言的开发人员诋毁ASP.Net开发人员的时候经常会说“你们什么都不懂,就会拖控件”。
ASP.Net的快速开发是ASP.Net非常大的一个优点,可以加快开发效率,这是行业的发展趋势,但是局限于这样的“傻瓜化开发方式”的开发人员的竞争力和成长性都是非常有限的,遇到ASP.Net一些高级技术(比如ASP.NetMVC、SEO、网站调优、服务端客户端混合编程、AJAX等)的时候就完全不能胜任。
通过上一个阶段的HTML、JavaScript、Dom的学习,学员已经有了很好的HTML、JavaScript基础;
在ASP.Net课程的一开始,不是直接教学员怎么拖ASP.Net控件进行快速开发,而是通过ashx的模式开发原始的动态网站,让学员明白“请求—处理—响应模型”、“Http协议、Http无状态”、“c#代码渲染生成浏览器端JavaScript”、“ViewState的作用”、“Session的原理”等这些基本而又重要的原理,从而扫清后面ASP.Net知识学习的基础性障碍。
由于访问量非常大,因此互联网项目的开发对ASP.Net开发人员的要求非常高,所以我们安排了互联网调优、缓存、网站防黑等内容。
ASP.Net中控件数量是非常多的,讲解ASP.Net的教材通常要上千页,让初学者望而生畏,其实ASP.Net大部分控件相似性非常强的,同类型的控件学会了一个那么其他控件也就很容易学会了。
比如只要学会了DropDownList,那么RadioButtonList、ListBox、CheckBoxList、BulletedList等几乎不用学就会用;
再比如只要学会了ListView,那么Repeater、GridView、FormView等控件也是触类旁通。
传智播客认真钻研教学,对知识进行分类、整理、提炼精华,让学员在短时间内掌握ASP.Net技术。
ASP.Net中有一些技术是有局限性的,传智播客根据这些技术在企业中的实际应用情况进行了调整、补充。
比如项目中几乎没有在UI层直接访问数据库的,而是采用三层架构,因此我们不讲解UI层直连数据库的控件SQLDataSource,而是把主要精力放在讲解三层架构开发模式。
再比如ASP.Net内置的AJAX解决方案UpdatePanel只在部分要求不高的内网项目中才被使用,因此我们在讲解UpdatePanel的使用和原理之外,把更多的时间放在讲解企业中用的最多的JQueryAJAX解决方案上。
6、B/S系统项目(7天)项目说明1、网上图书商城。
这是一个典型的B2C网上商城,使用经典的复杂三层架构(工厂模式)进行开发。
涉及图书管理、搜索、订单管理、导航管理等核心模块。
在讲解ASP.Net基础后安排这样一个B2C网上商城系统,让学员在实际项目中将学到的知识学以致用。
2、办公自动化OA系统。
这是一个典型的基于ASP.Net技术的OA协同办公项目,包含了权限管理、公告管理、文档管理、工作流、论坛管理、新闻模块管理、人员管理等典型的OA系统模块。
3、数据采集和邮件群发。
这是一个基于多线程的邮件营销平台,核心技术包括网络爬虫、多线程、HTML解析、邮件发送、生产者消费者模式等。
注:以上三个案例,上课时会根据每个班的课堂反馈选择其中一个案例予以讲解学习。
7、如鹏网项目(9天)查看项目演示功能点站内搜索、栏目管理、视频播放(完全模仿优酷视频页面)、焦点图、静态页面生成(新浪、搜狐等大型网站普遍采用的技术)、文章管理、无刷新评论、评论的无刷新分页、敏感词过滤、用户管理、友情链接管理、缓存管理、广告位管理、RSS输出、水印设置、无刷新上传图片、搜索引擎优化设置、数据备份恢复、伪静态设置、网上商城、订单管理、在线支付(支持支付宝、财付通、块钱等第三方支付平台)、网站调优(数据库优化、缓存、静态页、CSSSpirit、js压缩)。
技术点搜索引擎技术:Lucene.Net、多线程开发、爬虫技术、网页分析、正则表达式、Log4Net日志框架、Quartz.Net定时作业调度。
大型互联网开发技术:代码生成、网页静态化、基于JQuery的Web2.0页面开发、AJAX、SEO、网站调优、采集器、RSS/XML、网站防黑(防XSS攻击、防注入漏洞攻击、防CC攻击、防挂马、防盗链、敏感词过滤、广告帖智能过滤)、IIS管理与调优、流量分析、第三方脚本嵌入(广告、统计代码、内容联盟等)、图片服务器分离。
项目说明如鹏网项目是已经上线三年的网站,日访问量最高20000人次,网址www.rupeng.com。
本系统旧版本基于PHP、J2EE技术,由如鹏网开发者亲手操刀用.net重写新版本。
系统分为前台Web界面、后台管理界面、站内搜索、监控客户端四个子系统。
大型互联网站由于访问量非常大,因此不是那些单纯用ASP.Net控件拖拽开发的开发人员能够开发的,也不是闭门造车能够造出来的,必须是在实际项目中经过无数访问者的使用、反馈、修改才能做出来的。
搜房网、汽车之家等大型网站中用到的网站静态化、图片服务器分离、高性能缓存、HTML/JS压缩、CDN、CSSSprite、负载均衡、Memcached、镜像服务器同步等问题不是那些随手写出来的所谓在线商城、电子商务系统所所能够涉及到的。
这个项目完全按照高访问量互联网站进行设计,通过这个项目,学员不仅可以在实战中巩固对前面学习的ASP.Net、ADO.Net、WinForm等知识的掌握,还可以掌握网站防黑、缓存、SEO、静态化、搜索引擎技术、AJAX等大型互联网开发中涉及到的技术。
8、.Net新技术(WindowsPhone、ASP.NetMVC)(6天)项目说明未来是移动互联网的时代,未来将是WindowsPhone、Android、iphone三足鼎立的时代,掌握了移动开发的技能的人是就业市场的抢手货。
微软推出的WindowsPhone平台是微软在移动互联网时代的一个重量级产品,微软对于WindowsPhone7的推广力度非常大,因此很多公司也开始进行WindowsPhone7产品的研发,2011年下半年WindowsPhone7开发人员的需求将会出现井喷,为了帮助学员掌握移动3G开发技术,传智播客.Net班加入了WindowsPhone开发课程,采用传智播客独创的WP7Simulator教学平台,学员可以做出一个基于云计算架构的LBS系统。
点击查看传智播客独创WP7Simulator教学平台。
ASP.NetMVC是微软推出的区别于ASP.NetWebForm的Web开发新技术,由于ASP.NetMVC解决了ASP.NetWebForm的很多缺点,非常适合大型、中型项目的开发,一经推出就受到了.Net开发社区的追捧,很多.Net开发人员的职位要求中都提到了MVC,可见掌握ASP.NetMVC技术必将提升自己就业的砝码。
9、就业指导(2天)项目说明总结以往所学知识,讲解《传智播客.Net面试、笔试宝典》,介绍简历、笔试、面试等所需的知识和技巧。
2024/12/31 22:20:43 8KB .net
1
本书是Java语言的经典教材,中文版分为基础篇和进阶篇,主要介绍程序设计基础、面向对象程序设计、GUI程序设计、数据结构和算法、高级Java程序设计等内容。
本书以示例讲解解决问题的技巧,提供大量的程序清单,每章配有大量复习题和编程练习题,帮助读者掌握编程技术,并应用所学技术解决实际应用开发中遇到的问题。
基础篇主要介绍基本程序设计、语法结构、面向对象程序设计、继承和多态、异常处理和文本I/O、抽象类和接口等内容。
2024/12/15 17:51:07 26.72MB Java 程序设计 数据结构 算法思想
1
MATLABGUI设计学习手记(第二版)【罗华飞编著2011】电子书,以及原书配套的源程序。
=============================================编辑推荐一本广受好评的界面设计工具书!论坛答疑,包教包会,一书在手,毕业无忧。
随书附赠所有实例的程序源代码作者简介罗华飞,湖北黄冈1983年2月出生,2008年硕士毕业于哈尔滨工程大学通信与信息系统专业,现居重庆。
目前擅长MATLABGUI、WPF等界面设计,以及PIC单片机程序开发、数据库系统开发。
现在从事的是WPF软件设计工作,在四川航天电液控制有限公司从事电控产品配套软件开发工作.代表作有《MATLABGUI设计学习手记》第一版和第二版。
目录第1章GUI设计预备知识11.1知识点归纳11.1.1基本程序元素11.1.2数据类型71.1.3矩阵操作401.1.4程序设计491.2重难点讲解591.2.1矩阵、向量、标量与数组591.2.2数据类型转换611.3专题分析64专题1编程风格64专题2代码优化68专题3M文件编程小技巧72专题4正则表达式781.4精选答疑86问题1单元数组占用的内存空间如何计算86问题2如何生成指定格式的常矩阵、字符串87问题3如何生成随机矩阵90问题4如何查找或删除数据中满足条件的元素91问题5如何给数组元素排序94问题6如何从文本中查找数值96问题7如何验证邮箱名是否合法97问题8如何验证用户名或密码是否合法98问题9如何验证日期字符串是否有效99问题10如何验证身份证号是否符合指定的编码规则100问题11如何将最简多项式的字符串转换为系数向量102问题12如何抓取网页中的图片103第2章文件I/O1042.1知识点归纳1042.1.1高级文件I/O操作1042.1.2低级文件I/O操作1212.2重难点讲解1342.2.1二进制文件与文本文件1342.2.2sprintf与fprintf函数1352.2.3fscanf与textscan函数1362.2.4Excel文件操作1362.2.5图像数据的操作1362.2.6低级文件I/O操作1372.3专题分析137专题5MATLAB读写文本文件1372.4精选答疑147问题13如何提取Excel文件中的数据信息147问题14如何由图像生成字符矩阵150问题15如何循环播放WAV音乐,并可以倍速/慢速播放、暂停/继续播放和停止播放152问题16如何读取文本和数值混合的文件中的数据155问题17如何将十六进制数转换为float值155第3章二维绘图简介1573.1知识点归纳1573.1.1常用的二维绘图函数1573.1.2绘图工具1633.1.3绘图注释1663.2重难点讲解1743.2.1二维绘图的相关函数1743.2.2Tex字符1743.3精选答疑175问题18如何绘制几何曲线,例如矩形、圆、椭圆、双曲线等175问题19如何绘制数据的统计图176问题20如何绘制特殊的字符、表达式176问题21如何绘制网格图177问题22如何显示符号运算结果178第4章句柄图形系统1804.1知识点归纳1804.1.1句柄图形对象1814.1.2句柄图形对象的基本操作1824.1.3句柄图形对象的基本属性1924.1.4根对象1964.1.5图形窗口对象2004.1.6坐标轴对象2114.1.7核心图形对象2174.1.8uicontrol对象2384.1.9hggroup对象2434.1.10按钮组与面板2464.1.11自定义菜单与右键菜单2484.1.12工具栏与工具栏按钮2564.1.13uitable对象2644.2重难点分析2744.2.1句柄式图形对象的常用函数总结2744.2.2Figure对象的几个重要属性2754.2.3Axes对象的几个重要属性2764.2.4Line对象的几个重要属性2774.2.5text对象的几个重要属性2784.2.6uitable对象的几个重要属性278
2024/12/10 2:17:21 66.47MB MATLAB GUI 学习手记
1
可编程控制器是20世纪70年代发展起来的控制设备,是集微处理器、存储器、输入/输出接口与中断于一体的器件,已经被广泛应用于机械制造、冶金、化工、能源、交通等各个行业。
计算机在操作系统、应用软件、通行能力上的飞速发展,大大增强了可编程控制器通信能力,丰富了可编程控制器编程软件和编程技巧,增强了PLC过程控制能力。
因此,无论是单机还是多机控制、是流水线控制还是过程控制,都可以采用可编程控制器,推广和普及可编程控制器的使用技术对提高我国的工业自动化水平及生产效率都有十分重要的意义。
2024/12/9 0:18:09 423KB 水塔 自动控制
1
对即将找工作的大学生,研究生都爱刷leetcode的题目,但是刚刚接受无法适从,或是一时半会儿想不到解法,没关系,leetcode题解PDF可一带你慢慢了解思路过程。
目录3.4Addbinary615.1.5BinaryTreeLevelOr-3.5LongestPalindromicSubstring.62dertraversalil3.6RegularExpressionMatching665.1.6BinaryTreeZigzag3.7WildcardMatching67LevelOrdertraversal.963.8LongestCommonPrefix5.1.7RecoverBinarySearch3.9ValidNumber70Tree983.10Integertoroman725.1.8SameTree3.11RomantoInteger5.1.9SymmetricTree1013.12CountandSay745.1.10BalancedBinaryTree..1023.13Anagrams755.1.11FlattenBinaryTreeto3.14SimplifyPath76LinkedList1033.15LengthofLastWord775.1.12PopulatingNextRightPointersineachnodeii105第4章栈和队列7952二叉树的构建1074.1栈795.2.1ConstructBinaryTree4ValidParentheses79fromPreorderandIn4.1.2LongestvalidParenorderTraversatheses805.2.2ConstructBinaryTree4.1.3LargestRectangleinfromInorderandposHistogram82torderTraversal1084.14Evaluatereversepol-53二叉查找树109ishnotation845.3.1UniqueBinarySearch4,2队列85Trees5.3.2UniqueBinarySearch第5章树86Treesli.1105.1二叉树的遍历865.3.3ValidateBinarySearch5.1.1BinaryTreePreorderTreeTraversal865.3.4ConvertSortedarrayto5.1.2BinaryTreeInorderBinarySearchTreel12Traversal885.3.5ConvertSortedListto5.1.3BinaryTreePostorderBinarysearchtree113Traversal9054二叉树的递归1155.1.4BinaryTreeLevelOr5.4.1MinimumDepthofBidertraversalnarylree115目录5.4.2MaximumDepthofBi8.32重新实现nextpermunaryTree116tation1425.4.3PathSum117833递归.1435.44PathSumil1188.4PermutationsII1445.4.5BinaryTreeMaximum8.4.1nextpermutation...144PathSuum119842重新实现nextpermu5.4.6PopulatingNextRighttation144Pointersineachnode12084.3递归1445.4.7SumRoottoLeafNum8.5Combinations146bers122851递归146852迭代147第6章排序1238.6LetterCombinationsofaphone6.1MergeSortedArray123umber1476.2MergeTwoSortedLists12486.1递归1486.3MergekSortedLists124862迭代96.4InsertionSortList125第9章广度优先搜索1506.5Sortlist1269.1WordLadder1506.6FirstMissingPositive1279.2WordLadderil..1526.7SortColors289.3Surroundedregions154第7章查找94小结15613194.1适用场景1567.1Searchforarange131942思考的步骤.1567.2SearchInsertPosition.13294.3代码模板1577.3Searcha2DMatrix133第10章深度优先搜索162第8章暴力枚举法13510.1PalindromePartitioning..1628.1Subsets13510.2UniquePaths1658.1.1递归1350.2.1深搜1658.1.2迭代.13710.22备忘录法.1658.2Subsetsil13810.23动规166821递归1381024数学公式167822迭代.14110.3UniquePathsIl1688.3Permutations14210.3.1备忘录法1688.3.1nextpermutation14210.3.2动规.169目录10.4N-Queens16913.4Maximalrectangle19910.5N-QueensII17213.5BestTimetoBuyandSellStock10.6Restoreipaddresses17320010.7CombinationSum17413.6InterleavingString20110.8CombinationSumIl17513.7ScrambleString20310.9GenerateParentheses.17713.8MinimumPathSum20810.10Sudokusolver17813.9EditDistance21010.11WordSearch.18013.10DecodeWays.21210.12小结18113.11DistinctSubsequences21310.12.1适用场景1813.12WordBreak21410.122思考的步骤1811313WordBreakil21610.12.3代码模板183第14章图21810.12.4深拽与回溯法的区别.18414.1CloneGraph10.12.5深搜与递归的区别..184第15章细节实现题221第11章分治法18515.1ReverseInteger2211.1Pow(x,n)18515.2PalindromeNumber222qrt(x18615.3InsertInterval223第12章贪心法18715.4MergeIntervals22412.1Jumpgame18715.5MinimumWindowSubstring..22512.2JumpgameIl18815.6MultiplyStrings22712.3BestTimetobuyandsellstock19015.7SubstringwithConcatenation12.4BestTimetobuyandsellstock191ofallwords23012.5LongestSubstringWithoutre15.8Pascal,sTrianglepeatingCharacters19215.9PascalsTriangleIl23212.6ContainerwithmostWater.19315.10Spiralmatrix23315.11SpiralmatrixII234第13章动态规划19515.12ZigZagConversion23613.1Triangle19515.13DivideTwoIntegers23713.2MaximumSubarray19615.14TextJustification23813.3PalindromePartitioningII19815.15MaxPointsonaline目录第1章编程技巧在判断两个浮点数a和b是否相等时,不要用a=-b,应该判断二者之差的绝对值fabs(a-b)是否小于某个阈值,例如1e-9。
判断一个整数是否是为奇数,用x%2!=0,不要用x%2==1,因为x可能是负数用char的值作为数组下标(例如,统计字符串中每个字符出现的次数),要考虑到char可能是负数。
有的人考虑到了,先强制转型为unsignedint再用作下标,这仍然是错的。
正确的做法是,先强制转型为unsignedchar,再用作下标。
这涉及C++整型提升的规则,就不详述了。
以下是关于STL使用技巧的,很多条款来自《EffectiⅤveStL》这本书。
vector和string优先于动态分配的数组首先,在性能上,由于vector能够保证连续内存,因此一旦分配了后,它的性能跟原始数组相当其次,如果用new,意味着你要确保后面进行了delete,一旦忘记了,就会岀现BUG,且这样需要都写一行delete,代码不够短再次,声明多维数组的话,只能一个一个new,例如:int**ary=newint*[row_num];for(inti=0:i<rownum;++1)ary[i]newint[col_num]用vector的话一行代码搞定,vector<vector<int>>ary(row_num,vector<int>(col_num,0))使用reserve来避免不必要的重新分配第2章线性表这类题目考察线性表的操作,例如,数组,单链表,双向链表等。
21数组2.1.1RemoveDuplicatesfromSortedarray描述Givenasortedarray,removetheduplicatesinplacesuchthateachelementappearonlyonceandreturnthenewlengthDonotallocateextraspaceforanotherarray,youmustdothisinplacewithconstantmemoryForexample,GiveninputarrayA=[1,1,2Yourfunctionshouldreturnlength=2,andaisnow[1,2]分析无代码1/LeetCode,RemoveDuplicatesfromSortedArray/时间复杂度0(n),空间复杂度0(1)classSolutiontublicintremoveDuplicates(intA[],intn)tlf(n==oreturnointindex=0:for(inti=1:i<n:i++iif(Alindex!alidA[++index]=Alireturnindex12.1数组代码2//LeetCode,RemoveDuplicatesfromSortedArray//使用STL,时间复杂度0(n),空间复杂度0(1)classSolutionipublicintremoveDuplicates(intA[,intn)treturndistance(A,unique(A,An))代码3/LeetCode,RemoveDuplicatesfromSortedArray/使用STL,时间复杂度0(n),空间复杂度0(1)lassSolutionfublicintremoveDuplicates(intA[],intn)treturnremoveDuplicates(A,A+n,A)-A;template<typenameInIt,typenameoutit>OutItremoveDuplicates(InItfirst,InItlast,OutItoutput)thile(firstlast)i*output++=*firstfirstupper_bound(first,last,*firstreturnoutput相关题目RemoveduplicatesfromSortedArrayIl,见§2.1.22.1.2RemoveDuplicatesfromSortedArrayII描述Followupfor"RemoveDuplicates"Whatifduplicatesareallowedatmosttwice?Forexample,Givensortedarraya=[1,1,1,2,2,3]Yourfunctionshouldreturnlength=5,andAisnow[1,1,2,2,3分析加一个变量记录一下元素出现的次数即可。
这题因为是已经排序的数组,所以一个变量即可解决。
如果是没有排序的数组,则需要引入一个hashmap来记录出现次数4第2章线性表代码1//LeetCode,RemoveDuplicatesfromSortedArrayII/时间复杂度0(n),空间复杂度0(1)//qauthorhex108(https://github.com/hex108)classSolutiontublicintremoveDuplicates(intA[],intn)tlf(n<=2returnnintindex=2for(inti=2:in:1++)if(all]!Alindex-2])ALindex++]=Ali]returnindex;代码2下面是一个更简洁的版本。
上面的代码略长,不过扩展性好一些,例如将occur<2改为ocur<3,就变成了允许重复最多3次。
//LeetCode,RemoveDuplicatesfromSortedArrayII//@author虞航仲(http://weibo.com/u/1666779725)//时间复杂度0(n),空间复杂度0(1)classSolutionipublicintremoveDuplicates(intA[],intn)tmtindex=ofor(intif(i>0&&i<1&&A[i]==A[i-1]&&A[i]==A[i+1])continueAlindex++]=Alireturnindex;相关题目RemoveDuplicatesfromSortedArray,见§2.1.12.1.3SearchinRotatedSortedArray描述Supposeasortedarrayisrotatedatsomepivotunknowntoyoubeforehand
2024/12/7 0:08:16 1.03MB leetcode题解
1
共 685 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡