- 浏览: 130663 次
文章分类
- 全部博客 (189)
- Tree (14)
- Dynamic Programming (34)
- Array (20)
- Search (1)
- Hash (12)
- Backtracking (22)
- Divide and Conque (8)
- Greedy (6)
- Stack (12)
- software (0)
- List (7)
- Math (22)
- Two pointers (16)
- String (20)
- Linux (1)
- Sliding Window (4)
- Finite State Machine (1)
- Breadth-first Search (7)
- Graph (4)
- DFS (6)
- BFS (3)
- Sort (9)
- 基础概念 (2)
- 沟通表达 (0)
- Heap (2)
- Binary Search (15)
- 小结 (1)
- Bit Manipulation (8)
- Union Find (4)
- Topological Sort (1)
- PriorityQueue (1)
- Design Pattern (1)
- Design (1)
- Iterator (1)
- Queue (1)
最新评论
-
likesky3:
看了数据结构书得知并不是迭代和递归的区别,yb君的写法的效果是 ...
Leetcode - Graph Valid Tree -
likesky3:
迭代和递归的区别吧~
Leetcode - Graph Valid Tree -
qb_2008:
还有一种find写法:int find(int p) { i ...
Leetcode - Graph Valid Tree -
qb_2008:
要看懂这些技巧的代码确实比较困难。我是这么看懂的:1. 明白这 ...
Leetcode - Single Num II -
qb_2008:
public int singleNumber2(int[] ...
Leetcode - Single Num II
Given two numbers represented as strings, return multiplication of the numbers as a string.
Note: The numbers can be arbitrarily large and are non-negative.
[分析] Naive的做法是模拟笔算乘法操作,从高位到低位的顺序将num2 上的每一位同num1 相乘,由于运算顺序从高到低,每次运算时将上一次运算结果后加0,(相当于*10)后同本次乘积结果加和。 高效做法(Method 2)思路:num1 * num2, num2上的每一位依次和num1中的每一位相乘,num2的个位同num1的个位相乘结果包含在最终乘积的个位上,同理num2的个位同num1的十位相乘结果包含在最终乘积的十位上,num2的十位同num1的个位相乘结果也包含在最终乘积的十位上,一般的,num2的第 i 位 同num1的第 j 位相乘结果包含在最终乘积的第 i + j 位,遍历两个数的每一位,可以得到最终乘积各位上的结果。这样得到的乘积各位上可能是两位数,因此还需要处理使得乘积结果各位上为单个数字,处理方式就是依次进位。Method 1有O(m * n)次 *、\、% 以及字符串append操作, O(m * (m + n))次 +, append操作,而Method 2仅有O(m * n)次 *、+ 以及O(m + n)次 \、%、append操作,我们知道除法和取模是最耗时的,所以前者超时也就不难怪了。
Note: The numbers can be arbitrarily large and are non-negative.
[分析] Naive的做法是模拟笔算乘法操作,从高位到低位的顺序将num2 上的每一位同num1 相乘,由于运算顺序从高到低,每次运算时将上一次运算结果后加0,(相当于*10)后同本次乘积结果加和。 高效做法(Method 2)思路:num1 * num2, num2上的每一位依次和num1中的每一位相乘,num2的个位同num1的个位相乘结果包含在最终乘积的个位上,同理num2的个位同num1的十位相乘结果包含在最终乘积的十位上,num2的十位同num1的个位相乘结果也包含在最终乘积的十位上,一般的,num2的第 i 位 同num1的第 j 位相乘结果包含在最终乘积的第 i + j 位,遍历两个数的每一位,可以得到最终乘积各位上的结果。这样得到的乘积各位上可能是两位数,因此还需要处理使得乘积结果各位上为单个数字,处理方式就是依次进位。Method 1有O(m * n)次 *、\、% 以及字符串append操作, O(m * (m + n))次 +, append操作,而Method 2仅有O(m * n)次 *、+ 以及O(m + n)次 \、%、append操作,我们知道除法和取模是最耗时的,所以前者超时也就不难怪了。
// method 2: public String multiply(String num1, String num2) { if (num1 == null || num2 == null || num1.length() == 0 || num2.length() == 0) return null; if (num1.length() < num2.length()) return multiply(num2, num1); if (num2.equals("0")) return "0"; if (num2.equals("1")) return num1; int[] result = new int[num1.length() + num2.length() - 1]; for (int i = num2.length() - 1; i >= 0; i--) { int digit1 = num2.charAt(i) - '0'; for (int j = num1.length() - 1; j >= 0; j--) { result[i + j] += digit1 * (num1.charAt(j) - '0'); } } int carry = 0; for (int i = result.length - 1; i >= 0; i--) { result[i] += carry; carry = result[i] / 10; result[i] %= 10; } StringBuilder val = new StringBuilder(); if (carry > 0) val.append(carry); for (int i = 0; i < result.length; i++) val.append(result[i]); return val.toString(); } // method 1 : public String multiply1(String num1, String num2) { if (num1 == null || num2 == null || num1.length() == 0 || num2.length() == 0) return null; String result = ""; for (int i = 0; i < num2.length(); i++) { result = add(result + '0', multiOneDigit(num1, num2.charAt(i) - '0')); } return result; } private String add(String num1, String num2) { if (num1.length() < num2.length()) { String tmp = num2; num2 = num1; num1 = tmp; } StringBuilder sum = new StringBuilder(); int carry = 0, val = 0; int i = num1.length() - 1, j = num2.length() - 1; while (j >= 0) { val = (num1.charAt(i) - '0') + (num2.charAt(j) - '0'); sum.append(val - 10); // val % 10 carry = val >= 10 ? 1 : 0; // val / 10 i--; j--; } while (i >= 0) { val = (num1.charAt(i--) - '0') + carry; sum.append(val - 10); carry = val >= 10 ? 1 : 0; } if (carry > 0) sum.append(carry); return sum.reverse().toString(); } private String multiOneDigit(String num1, int num2) { StringBuilder result = new StringBuilder(); int carry = 0, val = 0; for (int i = num1.length() - 1; i >= 0; i--) { val = (num1.charAt(i) - '0') * num2 + carry; result.append(val % 10); carry = val / 10; } if (carry > 0) result.append(carry); return result.reverse().toString(); }
发表评论
-
Leetcode - Integer to English Words
2015-09-04 20:53 1064[分析] 这题通过率之所以非常低是因为有很多corner ca ... -
Leetcode - Strobogrammatic Number III
2015-09-03 16:45 2125A strobogrammatic number is a n ... -
Leetcode - Read N Characters Given Read4 II - Call Multiple Times
2015-08-28 09:00 802The API: int read4(char *buf) r ... -
Leetcode - Read N Characters Given Read4
2015-08-27 20:56 649The API: int read4(char *buf) r ... -
Leetcode - One Edit Distance
2015-08-27 20:26 500[分析] 两字符串相同或者长度差异大于等于2都不符合要求,只需 ... -
Leetcode - Basic Calculator II
2015-08-27 09:16 865mplement a basic calculator to ... -
Leetcode - Factorial Trailing Zeroes
2015-08-25 09:00 396[思路] 数乘积结果的后缀0,其实就是数结果中有多少个因子10 ... -
Leetcode - Ugly Number II
2015-08-24 22:54 1119[分析] 暴力的办法就是从1开始检查每个数是否是丑数,发现丑数 ... -
Leetcode - Excel Sheet Column Title
2015-08-24 10:24 611[分析] 十进制转26进制,需要注意的是26进制是以1为最小数 ... -
Leetcode - Max Points on a Line
2015-08-23 15:30 671[分析] 两条直线若包含一个公共点且斜率相同,则为同一条直线。 ... -
Leetcode - Fraction to Recurring Decimal
2015-08-23 10:05 433[分析] 处理int型整数运算时,为避免溢出,省事的做法就是内 ... -
Leetcode - Isomorphic Strings
2015-08-23 09:51 511[分析] 思路1:维护两个哈希表,char[] map, bo ... -
Leetcode - Group Shifted String
2015-08-22 16:20 1685Given a string, we can "sh ... -
Leetcode - Count Primes
2015-08-22 13:42 478[ref] https://en.wikipedia.org/ ... -
Leetcode - Strobogrammatic Number
2015-08-22 10:48 1062A strobogrammatic number is a n ... -
Leetcode - Add Binary
2015-08-21 09:28 434[分析] 从低位往高位逐位相加,就是这么一个简单的题却花了我一 ... -
Leetcode - Rotate Image
2015-08-19 19:51 466[分析] 自己的思路:从外到内一圈圈顺时针旋转90度,坐标映射 ... -
Missing Ranges
2015-08-19 09:48 485[分析] 此题若不考虑极大值极小值相关的corner case ... -
Leetcode - Bitwise AND of Number Range
2015-08-17 09:41 467Given a range [m, n] where 0 &l ... -
Leetcode - Pow(x, n)
2015-08-11 09:45 434[分析] 数值计算类型题目,二分法或者借助位运算,本题两种方法 ...
相关推荐
毕业设计:基于SSM的mysql_羽毛球交流平台系统(源码 + 数据库 + 说明文档) 2 关键技术介绍 6 2.1 JSP技术概述 6 2.2 MYSQL简介 6 2.3 B/S结构 7 2.4 JAVA语言 8 2.5 MyEclipse简介 9 2.6 性能分析 9 2.7 SSM概述 10 3 需求分析与设计 11 3.1 系统需求分析 11 3.2 运行可行性 11 3.3 系统可行性分析 11 3.3.1 技术可行性 11 3.3.2 经济可行性 12 3.3.3 操作可行性 12 3.4 系统功能分析 12 3.5 系统功能结构图 13 3.6 系统流程分析 14 4 数据库设计 17 4.1数据库逻辑结构设计 17 4.2数据库物理结构设计 20 5 系统的详细设计与实现 25 5.1首页页面 25 5.2站内新闻页面 25 5.3场地列表页面 26 5.4场地详情页面 26 5.5在线留言页面 27 5.6修改密码页面 27 5.7注册用户管理信息页面 28 5.8场地信息管理页面 28 5.9场地预约管理页面 29 5.10评论信息管理页面 29 5.11添加友情链
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
VLT 变频器工程指南 Guía de funcionamiento Safe Torque off Convertidores de frecuencia VLT
基于Java的C语言试题生成与考试系统的设计与实现是一个毕业设计题目,旨在通过使用Java编程语言设计和开发一个功能完善的C语言试题生成与考试系统。 该毕业设计题目的背景和意义在于,随着计算机科学的不断发展,C语言作为一门基础编程语言,被广泛应用于软件开发、系统编程等领域。为了更好地评估学生对C语言的掌握程度,传统的纸质试卷已经无法满足需求,因此,开发一个基于Java的C语言试题生成与考试系统具有重要的实际意义。 该毕业设计题目的主要研究内容包括以下几个方面:首先,需要进行系统需求分析,明确系统的功能需求和技术要求。然后,需要进行系统设计,包括数据库设计、模块划分、算法设计等。接下来,需要使用Java编程语言进行系统开发,包括前端界面开发、后台逻辑实现、数据库操作等。最后,需要进行系统测试和优化,确保系统的稳定性和可靠性。 通过完成该毕业设计题目,学生可以深入学习和掌握Java编程语言,提高软件开发能力。同时,学生还可以学习和了解C语言的相关知识,以及试题生成和考试系统的设计与实现方法。这对于学生未来的职业发展具有积极的推动作用。
毕业设计:基于SSM的mysql_智能图书馆导航系统(源码 + 数据库 + 说明文档) 2 系统总体设计 1 2.1 需求调研 1 2.2系统功能性需求 2 2.3可行性分析 3 2.2.1经济可行性 3 2.2.2技术可行性 3 2.2.3操作可行性 4 2.4功能性需求分析 4 2.5本章小结 5 第3章 系统设计 6 3.1设计的思路 6 3.2系统结构设计 6 3系统功能结构 6 3.3数据库设计 7 3.3.1数据库设计概述 7 3.3.2概念设计 8 3.3.3表设计 9 3.4业务功能设计与实现 11 3.4.1查询功能的设计与实现 11 3.4.2借阅功能的设计与实现 12 第四章 系统实现 14 4.1 系统登录页面实现 14 4.2管理员操作界面实现 14 4.3 图书管理实现 15 4.4读者表管理实现 17 4.5 借还管理实现 17 4.6图书借阅实现 18 4.7我的借还信息实现 18 第五章 系统测试 20 5.1系统测试环境 20 5.2系统单元测试 20 5.3集成测试 20 5.4测试用例 21 5.5 性能测试 21 5.6 测试结果分析 22
毕业设计:基于SSM的mysql_学习交流平台(源码 + 数据库 + 说明文档) 第二章 需求分析 5 2.1需求调研 5 2.2可行性分析 6 2.2.1技术的可行性 6 2.2.2经济的可行性 6 2.2.3操作可行性 6 2.2.4法律的可行性 7 2.3系统用户用例图 7 2.3.1管理员用例图 7 2.4功能模块需求分析 7 2.5设计的基本思想 9 2.6性能需求 9 2.6.1系统的安全性 9 2.6.2数据的完整性 9 2.7界面需求 10 2.7非功能性需求分析 11 2.7.1端到端响应时间 11 2.7.2易用性需求 11 2.7.3 可扩展性 11 第三章 系统分析与设计 12 3.1数据库的分析与设计 12 3.1.1数据库的概念结构设计 13 3.1.2数据库的逻辑结构设计 14 第四章 系统功能实现 17 4.1系统登陆页面实现 17 4.2总体功能模块 18 4.2.1注册用户信息管理 19 4.2.2学习资讯管理信息管理 20 4.2.3文章发表管理 21 4.2.4公告信息管理 22 4.2.5留言信息管理 22 4.2.6修改密码 23 4.2.
本资料包名为“基于JAVA的RSA文件加密软件的设计与实现”,是一个针对计算机专业学习者提供的实用资源。它包含了完整的Java源代码以及一篇详细的论文,旨在帮助用户深入理解并实践RSA加密算法在文件加密领域的应用。该源码是基于Java语言开发的,利用了Java平台的安全和网络特性,实现了一个简单而强大的RSA文件加密工具。通过这个工具,用户可以对任意文本或数据文件进行加密和解密操作,确保信息传输的安全性。代码结构清晰,注释齐全,便于学习和修改。配套的论文则详细介绍了整个项目的设计理念、开发过程、关键技术点以及可能的改进方向。它从理论到实践,逐步引导读者了解RSA加密原理,并通过实例演示如何在Java环境中实现这一算法。无论是对于正在学习密码学、网络安全或是Java编程的学生,还是对于需要实现文件加密功能的开发者来说,这份资料包都是一份宝贵的学习资源。它不仅提供了现成的解决方案,更开辟了一条探索信息安全和Java编程深层次结合的道路。重新回答||
毕业设计:基于SSM的mysql_学生网上请假系统(源码 + 数据库 + 说明文档) 第2章 主要技术和工具介绍 5 2.1 SSM 框架 5 2.1.1. Spring 框架 5 2.1.2 SpringMVC 6 2.1.3. MyBatis 的选用 6 2.2 mysql数据库 6 2.3eclipse与Tomcat简介 6 第3章 系统分析 4 3.1可行性分析 4 3.1.1经济可行性 4 3.1.2技术可行性 4 3.1.3操作可行性 4 3.2需求分析 4 3.3业务流程分析 5 3.4数据流程分析 5 第4章 系统设计 8 4.1系统结构设计 8 4.2功能模块设计 8 4.3数据库设计 9 4.3.1数据库设计概述 9 4.3.1概念设计 9 4.3.2表设计 11 第5章 系统实现 15 5.1基本论坛 15 5.2主页面的实现 15 5.3登录模块的实现 16 5.4班级信息管理模块的实现 17 5.6基础信息模块的实现 18 5.6用户权限管理模块的实现 19 5.7学生请假管理模块的实现 22 第6章 系统测试 23 6.1测试目的 23 6.2测试概述
学生成绩管理系统c
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
基于matlab开发的AUV惯性导航系统matlab仿真程序,包括轨迹生成、gps和sins组合、gps和dvl组合.rar
M24LC04B EEPROM的Verilog行为模型
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
2023商业银行数据资产体系白皮书 目录 第 1 章 数据资产化与数据要素市场化相辅相成,相互促进 第 2 章 数据资产化是企业数据治理向上演进的必经之路 第 3 章 数据资产体系发展概述 第 4 章 “三位一体”数据资产体系的构思 4.1“三位一体”数据资产体系的构成与工作机制 数据资产管理 数据资产运营 数据资产评价 数据资产体系工作机制 4.2“三位一体”数据资产体系的相互作用关系 4.3“三位一体”数据资产体系的构建 4.4“三位一体”数据资产体系的优势 第 5 章 商业银行数据资产体系建设实践 5.1商业银行开展数据资产体系建设的背景和目标 5.2商业银行数据资产体系建设的工作步骤 5.3上海银行数据资产体系建设实践的主要成果 第 6 章 数据要素流通市场赋能企业数据资产化 6.1全国多层次数据要素市场的建设 6.2上海数据交易所赋能企业数据资产化 6.3数据要素流通交易市场赋能企业数据资产化的展望 第 7 章 未来演进与展望
基于matlab实现wsn路由,用matlab仿真,具有选簇的功能.rar
学生成绩管理系统c++
Dubins曲线算法讲解和在运动规划中的使用.pdf
基于TOGAF的4A企业架构规划方法论.pptx