开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
Computer Science

Java 如何返回一个指定范围的随机数

希望返回的随机数为整数。 Java 如何返回指定访问内的随机数。 比如说 1 到 100 可以考虑使用下面的代码: int startInclusive = 1; int endExclusive = 100; logger.debug("min <= R <= max - [{}] ", RandomUtils.nextInt(startInclusive, endExclusive));   使用 RandomUtils 类中定义的方法,RandomUtils 定义在下面的 Package 中   org.apache.commons.lang3.RandomUtils Utility library that supplements the standard Random class. Since: 3.3 程序输出为: 2018/12/30 17:01:57 DEBUG [com.ossez.codebank.lang.tests.NumberTest] - min <= R <= max - [42] https://www.cwiki.us/pages/viewpage.action?pageId=41684032

2018年12月30日 0Comments 890Browse 0Like Read more
Computer Science

Java 如何生成随机数

请参考页面 随机数 中的内容和 GitHub https://github.com/cwiki-us/codebank-lang/blob/master/src/test/java/com/ossez/codebank/lang/tests/NumberTest.java 中的代码。 主要你可以考虑使用 org.apache.commons.lang3.RandomUtils 和 org.apache.commons.lang.RandomStringUtils 中的 2 个工具类来帮助你实现。 具体的实现方法,请参考工具类中的说明。  

2018年12月30日 0Comments 1086Browse 0Like Read more
Computer Science

Java 如何生成一个 8 位的字母和数字组合随机字符串

使用下面的方法: RandomStringUtils.randomAlphanumeric(10) 使用的类是: org.apache.commons.lang.RandomStringUtils Operations for random Strings. Currently private high surrogate characters are ignored. These are unicode characters that fall between the values 56192 (db80) and 56319 (dbff) as we don't know how to handle them. High and low surrogates are correctly dealt with - that is if a high surrogate is randomly chosen, 55296 (d800) to 56191 (db7f) then it is followed by a low surrogate. If a low surrogate is chosen, 56320 (dc00) to 57343 (dfff) then it is placed after a randomly chosen high surrogate. 你可以使用下面的方法: logger.debug("RandomStringUtils - [{}]", RandomStringUtils.randomAlphanumeric(10));   程序输出为: 2018/12/30 17:01:57 DEBUG [com.ossez.codebank.lang.tests.NumberTest] - 9ZhT1dDl49  

2018年12月30日 0Comments 1409Browse 0Like Read more
Computer Science

Binomial Coefficient(二项式系数)

In mathematics, any of the positive integers that occurs as a coefficient in the binomial theorem is a binomial coefficient. Commonly, a binomial coefficient is indexed by a pair of integers n ≥ k ≥ 0 and is written {\displaystyle {\tbinom {n}{k}}.} {\displaystyle {\tbinom {n}{k}}.} It is the coefficient of the xk term in the polynomial expansion of the binomial power (1 + x)n, and it is given by the formula. 英文描述 英文描述请参考下面的图。 中文描述 根据给定的公式计算二项式的值。 在这里有一个说明需要注意的是,如果结果超过 1,000,000,000 你的程序应该返回 -1。 如果结果没有定义的话,那么你的程序应该也要返回 -1。 思路和点评 在这里的计算,公式比较简单,就是计算 N,K N-K 的阶乘,在阶乘中,你可以使用递归进行计算。 但是需要注意的是对这个数字的阶乘计算量,程序是很容易溢出的,如果从出题者的意图来看就是要考察大数值的计算和计算中的溢出。 如果你使用的是 Java 的话,你应该使用类 BigDecimal,进行计算。如果你可以使用 Apache Common Math 的话,你就直接使用 CombinatoricsUtils.factorialDouble 进行计算。在计算中允许的最大参数值为 170,超过这个值以后就超过程序能够计算的最大值了。 如果你希望直接计算二项式系数的话,你可以使用 CombinatoricsUtils.binomialCoefficientDouble(40, 20) 直接进行计算。 源代码 源代码和有关代码的更新请访问 GitHub: https://github.com/cwiki-us/codebank-algorithm/blob/master/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java 测试类请参考: https://github.com/cwiki-us/codebank-algorithm/blob/master/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java 代码思路请参考: /** * https://www.cwiki.us/display/ITCLASSIFICATION/Binomial+Coefficient * * Binomial Coefficient */ @Test public void testBinomialCoefficient() { int n = 40; int k = 20; BigDecimal bc = factorial(n).divide(factorial(k).multiply(factorial(n - k))); // a.compareTo(new BigDecimal(1000000000)) logger.debug("{}", bc); logger.debug("Check for Compare To - [{}]", bc.compareTo(new BigDecimal(1000000000))); logger.debug("Value - [{}]", bc); logger.debug("Apache CombinatoricsUtils Factorial - [{}]", CombinatoricsUtils.factorialDouble(20)); logger.debug("Apache CombinatoricsUtils Binomial Coefficient - [{}]", CombinatoricsUtils.binomialCoefficientDouble(40, 20)); } /** * for factorial * * @param x * @return */ private static BigDecimal factorial(int x) { if (x == 1 || x == 0) { return BigDecimal.valueOf(1); } else { return BigDecimal.valueOf(x).multiply(factorial(x - 1)); } }   测试结果 上面程序的测试结果如下: 2018/12/29 19:35:10 DEBUG [com.ossez.codebank.interview.tests.WayfairTest] - 137846528820 2018/12/29 19:35:10 DEBUG [com.ossez.codebank.interview.tests.WayfairTest] - Check for Compare To - [1] 2018/12/29 19:35:10 DEBUG [com.ossez.codebank.interview.tests.WayfairTest] - Value - [137846528820] 2018/12/29 19:35:10 DEBUG [com.ossez.codebank.interview.tests.WayfairTest] - Apache CombinatoricsUtils Factorial - [2.43290200817664E18] 2018/12/29 19:35:10 DEBUG [com.ossez.codebank.interview.tests.WayfairTest] - Apache CombinatoricsUtils Binomial Coefficient - [1.3784652882E11]  

2018年12月29日 0Comments 1015Browse 0Like Read more
Computer Science

Build Castles(构建城堡)

Charlemagne, the King of Frankie, 英文描述 请参考图片中的说明。 中文描述 根据给出的数组确定能够盖多少城堡。 思路和点评 我不能确定我的思路是正确的,也欢迎大家参与讨论。 根据给出的数组,因为有重复的值,我首先想到的是将给出的数组进行一次过滤和处理,去掉重复的值。 例如,给出的数组为:int[] A = { 2, 2, 3, 4, 3, 3, 2, 2, 1, 1, 2, 5 };,那么我希望处理为:int[] A = { 2, 3, 4, 3, 2, 1, 2, 5 }; 去掉重复的值,因为重复的值在这里没有意义。 然后根据新的数组进行判断,需要判断的是 2 个端点,你需要将 2 个端点考虑为 0。 那么根据上面已经处理过的数组,你在进行遍历的时候,针对第一个值 2 ,你需要判读左侧的值和右侧的值,因为默认左侧的值一直为 0 ,那么右侧的值为 3 的话,那么这里需要 v 需要 +1; 第 2 个值,因为第二个值的左侧,3 > 2, 但右侧 3 < 4。因此这个值不适合。 第 3 个值,左侧:4 > 3, 右侧 4 >3 这个值是合适的。 从这里我们找到的规律是,进行一次遍历,找到,如果只的左侧和右侧同时小于这值,或者左侧和右侧都同时大于这个值,那么这个值是合适的取值。 需要注意一个情况就是 {-3, -3},你初始化数组的时候,这个值为 {-3},那么这个地方是最少有一个合适的值。 源代码 源代码和有关代码的更新请访问 GitHub: https://github.com/cwiki-us/codebank-algorithm/blob/master/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java 测试类请参考: https://github.com/cwiki-us/codebank-algorithm/blob/master/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java 代码思路请参考: /** * https://www.cwiki.us/display/ITCLASSIFICATION/Build+Castles */ @Test public void testBuildCastles() { // int[] A = { -3, -3 }; int[] A = { 2, 2, 3, 4, 3, 3, 2, 2, 1, 1, 2, 5 }; int h = 0; int v = 0; List<Integer> nList = new ArrayList<Integer>(); // Rebuild List nList.add(A[0]); for (int i = 0; i < A.length - 1; i++) { if (A[i] != A[i + 1]) { nList.add(A[i + 1]); } } // LOOP List to find right location for (int i = 0; i < nList.size() - 1; i++) { // COUNT 0 if (i == 0) { if (nList.get(i) < nList.get(i + 1)) { v++; } } else { if (nList.get(i) < nList.get(i - 1) && nList.get(i) < nList.get(i + 1)) { v++; } if (nList.get(i) > nList.get(i - 1) && nList.get(i) > nList.get(i + 1)) { h++; } } } if (nList.size() == 1) { h++; } else if (nList.size() > 2 && nList.get(nList.size() - 1) > nList.get(nList.size() - 2)) { h++; } // CHECK logger.debug("V -…

2018年12月29日 0Comments 998Browse 0Like Read more
Computer Science

Commons Math 用户手册翻译

1、math包版本3.6 2、commons-math包解决哪些问题 math包由一组数据和统计的包组成,用于解决列表中列出的问题。列表虽不能覆盖math包全部的功能,但可以基本说明math包所能提供的方法。 计算一组数据的均值、方差,还有其他统计类指标。 使用线性回归将线拟合到一组数据点 将曲线拟合到一组数据点 找到通过点集合的平滑曲线(插值) 使用最小二乘法将参数模型拟合到一组测量 求解涉及实值函数的方程(即根查找) 求解线性方程组 求解常微分方程 最小化多维函数 生成具有比使用JDK的可能性更多的限制(例如分布,范围)的随机数生成跟输入文件中的数据相似的随机样本或数据集 统计检验 其他数学函数如阶乘,二项式系数和“特殊函数”(例如伽马,β函数) 3、commons-math包讲解 org.apache.commons.math3.analysis---根查找,积分,插值,多项式 org.apache.commons.math3.complex---复数 org.apache.commons.math3.dfp---十进制浮点数 org.apache.commons.math3.distribution---概率分布 org.apache.commons.math3.fitting---曲线拟合 org.apache.commons.math3.fraction---有理数 org.apache.commons.math3.genetics---遗传算法 org.apache.commons.math3.geometry---何(欧几里德空间和二进制空间分区) org.apache.commons.math3.linear---矩阵,求解线性系统 org.apache.commons.math3.ml---机器学习 org.apache.commons.math3.ode---普通微分方程积分 org.apache.commons.math3.optim---函数最大化还是最小化 org.apache.commons.math3.random---随机数,字符串和数据生成 org.apache.commons.math3.special---特殊函数(Gamma,Beta) org.apache.commons.math3.stat---统计,统计检验 org.apache.commons.math3.transform---变换(傅立叶) org.apache.commons.math3.util---通用数据或统计函数

2018年12月28日 0Comments 1981Browse 1Like Read more
Computer Science

Flatten Nested Arrays(展平嵌套数组)

这个题目是在一个公司现场面谈的时候的一个题目。虽然对这种找工作上来就做题目的现象比较反感。 但是大环境如此,也只能被蹂躏了。 中文描述 题目要求比较简单:[1,2,[3],[[4]],5,6] -> [1,2,3,4,5,6] 就是数组中嵌套数组,考察一个数组[1,2,[3],[[4]],5,6]。 你怎么能够输出 1,2,3,4,5,6(并不要求按照顺序输出)。 这里是一个嵌套数组,你需要将这个数组中的值全部取出来。 思路和点评 不清楚其他语言中这个数据结构怎么存储,我假设的是在 Java 中存储的对象。 可以采用队列的方式来实现,例如,在 Java 中存储了整数,1, 2, 对象,[3] 为一个数组对象。 你可以先遍历一次 List,将所有的 List 的对象都压入队列中,然后进行出队。 在出队时候,判断对象是否为整数对象,如果是整数对象,就输出,如果不是整数对象,然后将数组对象继续进行遍历,然后压入队列,然后再出队。 在这里讨论的问题比较多,还有 [[[2]5]] 这种多层嵌套的问题。 经过网站上的考古,这里有 2 个方法可以更快的实现。1 是递归的方法,2 是 利用 Java 8 的 Stream 特性。 在写测试代码之前,你需要明白下数据结构的定义,要不然你没有办法测试。在 Java 中你可以定义为对象数组,如下: Object[] array = { 1, 2, new Object[] { 3, 4, new Object[] { 5, new Object[] { new Object[] { 6 } } }, 7 }, 8, 9, 10 }; 然后可以利用递归,在对对象数组进行遍历的时候,如果你遇到了对象,那么你需要再次调用你的方法,对对象中的内容进行遍历,如果这个时候已经没有对象了,可以返回第二层遍历的结果,并且插入到上层 List 列表中。 如果你使用的 Java 8 的 Stream,你需要对 Stream 的使用和方法比较了解才可以。这里也涉及到了递归,只是写法有点不同罢了。 还有一个更加简单粗暴的方法,当然我不认为这个方法是出题人希望考察的目标,在 Java 中你可以将数组直接转换成 String 字符串进行输出,比如说上面的对象队列,你可以转换为: [1, 2, [3, 4, [5, [[6]]], 7], 8, 9, 10]  字符串进行输出,然后使用 Java 的 Split 函数,进行按照逗号拆分后,然后将多余 [ 和 ] 符号去掉,然后再将内容重新放回 List。 这个有点简单粗暴,但是也一样能够达到目的。 源代码 源代码和有关代码的更新请访问 GitHub: https://github.com/cwiki-us/codebank-algorithm/blob/master/src/test/java/com/ossez/codebank/interview/tests/PillPackTest.java 测试类请参考: https://github.com/cwiki-us/codebank-algorithm/blob/master/src/test/java/com/ossez/codebank/interview/tests/PillPackTest.java 代码思路请参考: package com.ossez.codebank.interview.tests; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * PillPack * * <pre> * https://www.cwiki.us/display/ITCLASSIFICATION/Flatten+Nested+Arrays * </pre> * * @author YuCheng * */ public class PillPackTest { private final static Logger logger = LoggerFactory.getLogger(PillPackTest.class); List<Integer> returnList = new ArrayList<Integer>(); /** * https://www.cwiki.us/display/ITCLASSIFICATION/Flatten+Nested+Arrays * * FlattenNestedArrays */ @Test public void testFlattenNestedArrays() { logger.debug("Test FlattenNestedArrays"); Object[] array = { 1, 2, new Object[] { 3, 4, new Object[] { 5, new Object[] { new Object[] { 6 } } }, 7 }, 8, 9, 10 }; logger.debug("LOOP: {} - > {}", Arrays.deepToString(array), Arrays.toString(loopFlatten(array))); logger.debug("Java 8: {} - > {}", Arrays.deepToString(array), Arrays.toString(java8Flatten(array).toArray())); } /** * Loop And Recursive * * @param inputArray * @return * @throws IllegalArgumentException */ private static Integer[] loopFlatten(Object[] inputArray) throws IllegalArgumentException { // NULL CHECK if (inputArray == null) return null; List<Integer> flatList = new ArrayList<Integer>(); for (Object element : inputArray) { if (element instanceof Integer) { flatList.add((Integer) element); } else if (element instanceof Object[]) { // Recursive flatList.addAll(Arrays.asList(loopFlatten((Object[])…

2018年12月27日 0Comments 1108Browse 0Like Read more
Computer Science

PillPack Onsite 5 个小时

现在找 OnSite 面试时间都这么长了吗? 经历几次都是 5 - 6 个小时的。不多废话,PillPack 的面谈内容吧。 本人主要是 Java ,他们招聘的岗位说是 Sr Developer and Manager。在面试进行到 3 个小时的时候,他们突然提出了使用的技术栈不是 Java,他们使用的 Ruby and Rails。当时就蒙圈了,折腾了 4 个多小时讨论的完全不是一个技术栈的东西,虽然本人并不拒绝学习,但是这个差得还是有点远。 他们希望构建新的 API 系统和相关平台。本人只有 Jersey 的经验,只能拿 Java 掰了。 下面是完全的面试过程: 第一轮:介绍公司概况,这个也没啥说的,就是公司的大致架构,产品线。因为是新成立的公司,公司的面试说是 Amazon 组织负责的,但是感觉和 Amazon 关系不大。可能 Amazon 从面试中要获得一些反馈吧。至于面试结果,他们只会告诉你给你 Offer 或者不给。不会给你面试的评价和问题。这个在这里就明确表达清楚了。 第二轮:算法和介绍。这里不要求你写出实际的代码,题目是俄罗斯方块,你怎么用数据模型表示。 在这里,我采取的方法是先定义可能出现的各种可能性,使用的是 二维数组。 在这里需要定义一个功能就是翻转,有些下落的方块可能会出现翻转成不同的形状,那么你定义列表就变了。 所有可能的情况,我会存储到一个 HashMap 中,Key 使用的是 1@1,Value 存储的是二维数组。如果 1@1 翻转后还有其他图形的话,你可以在存储一个 key 1@2 ,这个表示翻转以后的情况。当然这个可能不是最优的情况。 后面,我需要一个List,这个 List 中存储了 10 列的 List。在这里你需要根据 Map 中存储的二维数组,下落后插入到 List 中。 在插入完成后,遍历上层 List 确定所有的子 List 中有值 1 ,以便于消除。 第三轮:让你设计一个 POST 和 评论 点赞的平台,并且根据你的设计,设计一个 API 这个应该来说还是不是很复杂的,主要是你数据库中表格怎么设计,在评论载入的时候,会有评论嵌套评论的方式,你可能在设计表的时候要设计一个主重键。 基本上来说,这个就是数据库的设计,API 很多时候还是根据你数据结构进行数据调用的,基本上数据库设计好了,API 和 UI 怎么设计都没有什么太多问题。 这里我就基本上按照通用的设计方式设计表就 OK 了。 第四轮:职场行为交谈 一个小姑娘,主要询问下你在职场中人和人怎么相处。你有什么值得介绍的。如果和同事冲突了怎么办,你是否和同事冲突过,这些问题。并且希望你能够具体举例说明下你遇到的问题。这个只要是正常的都应该不会有太多问题的。 第五轮:雇用经理 在这里的问题比较多。同时他也问了一个算法题,就是数组中嵌套数组,考察一个数组[1,2,[3],[[4]],5,6]。 你怎么能够输出 1,2,3,4,5,6(并不要求按照顺序输出)。 不清楚其他语言中这个数据结构怎么存储,我假设的是在 Java 中存储的对象。 可以采用队列的方式来实现,例如,在 Java 中存储了整数,1, 2, 对象,[3] 为一个数组对象。 你可以先遍历一次 List,将所有的 List 的对象都压入队列中,然后进行出队。 在出队时候,判断对象是否为整数对象,如果是整数对象,就输出,如果不是整数对象,然后将数组对象继续进行遍历,然后压入队列,然后再出队。 在这里讨论的问题比较多,还有 [[[2]5]] 这种多层嵌套的问题。 我不认为我的解答是最好的方案,但是至少能够提供一个解题思路吧。

2018年12月26日 0Comments 1019Browse 0Like Read more
Computer Science

Hibernate 大数据量问题与性能

不要一味的为了 hibernate 而 hibernate 还是可以考虑 SQL。 hibernate 要做大量映射效率肯定不如纯的 jdbc 快这个只能说 hibernate 再这个方面和 ibatis 比还有一定差距数据量大可以解决。 下文则是对Hibernate性能优化技巧进行总结性分析,分析如下: 一、在处理大数据量时,会有大量的数据缓冲保存在 Session 的一级缓存中,这缓存大太时会严重显示性能,所以在使用 Hibernate 处理大数据量的,可以使用session. clear()或者session. evict(Object) 在处理过程中,清除全部的缓存或者清除某个对象。 二、对大数据量查询时,慎用list()或者iterator()返回查询结果, <1>. 使用List()返回结果时,Hibernate会所有查询结果初始化为持久化对象,结果集较大时,会占用很多的处理时间。 <2>. 而使用iterator()返回结果时,在每次调用iterator.next()返回对象并使用对象时,Hibernate才调用查询将对应的对象初始化,对于大数据量时,每调用一次查询都会花费较多的时间。当结果集较大,但是含有较大量相同的数据,或者结果集不是全部都会使用时,使用iterator()才有优势。 <3>. 对于大数据量,使用qry.scroll()可以得到较好的处理速度以及性能。而且直接对结果集向前向后滚动。 三、对于关联操作,Hibernate虽然可以表达复杂的数据关系,但请慎用,使数据关系较为简单时会得到较好的效率,特别是较深层次的关联时,性能会很差。 四、对含有关联的PO(持久化对象)时,若default-cascade="all"或者 “save-update”,新增PO时,请注意对PO中的集合的赋值操作,因为有可能使得多执行一次update操作。 五、在一对多、多对一的关系中,使用延迟加载机制,会使不少的对象在使用时才会初始化,这样可使得节省内存空间以及减少数据库的负荷,而且若PO中的集合没有被使用时,就可减少互数据库的交互从而减少处理时间。 六、对于大数据量新增、修改、删除操作或者是对大数据量的查询,与数据库的交互次数是决定处理时间的最重要因素,减少交互的次数是提升效率的最好途径,所以在开发过程中,请将show_sql设置为true,深入了解Hibernate的处理过程,尝试不同的方式,可以使得效率提升。 七、Hibernate是以JDBC为基础,但是Hibernate是对JDBC的优化,其中使用Hibernate的缓冲机制会使性能提升,如使用二级缓存以及查询缓存,若命中率较高明,性能会是到大幅提升。 八、Hibernate可以通过设置hibernate.jdbc.fetch_size,hibernate.jdbc.batch_size等属性,对Hibernate进行优化。 九、不过值得注意的是,一些数据库提供的主键生成机制在效率上未必最佳,大量并发insert数据时可能会引起表之间的互锁。数据库提供的主键生成机制,往往是通过在一个内部表中保存当前主键状态(如对于自增型主键而言,此内部表中就维护着当前的最大值和递增量),之后每次插入数据会读取这个最大值,然后加上递增量作为新记录的主键,之后再把这个新的最大值更新回内部表中,这样,一次Insert操作可能导致数据库内部多次表读写操作,同时伴随的还有数据的加锁解锁操作,这对性能产生了较大影响。因此,对于并发Insert要求较高的系统,推荐采用uuid.hex 作为主键生成机制。 十、Dynamic Update 如果选定,则生成Update SQL 时不包含未发生变动的字段属性,这样可以在一定程度上提升SQL执行效能.Dynamic Insert 如果选定,则生成Insert SQL 时不包含未发生变动的字段属性,这样可以在一定程度上提升SQL执行效能 十一、在编写代码的时候请,对将POJO的getter/setter方法设定为public,如果设定为private,Hibernate将无法对属性的存取进行优化,只能转而采用传统的反射机制进行操作,这将导致大量的性能开销(特别是在1.4之前的Sun JDK版本以及IBM JDK中,反射所带来的系统开销相当可观)。 十二、在one-to-many 关系中,将many 一方设为主动方(inverse=false)将有助性能的改善。 十三、由于多对多关联的性能不佳(由于引入了中间表,一次读取操作需要反复数次查询),因此在设计中应该避免大量使用。

2018年12月26日 0Comments 804Browse 0Like Read more
Computer Science

Count Up Down(上下计数)

这个题目是 Kayak 发布的代码挑战题目。 最简单的描述就是不使用循环,输出 0 到 5,然后同样不是会用循环的方式再次输出 5 到 0。 英文描述 Part 1 Write a program that counts in sequential order when given a start and end value - without using any iterative programing loops, i.e. while, for, do, for-each, etc. You can assume that both the start and end values will always be positive and that the start value will always be less then the end value. There should only be one method with the following signature: void countUp(int start, int end) { // All code exercise code should go here } Here is example output with start=0 and end=5: [ 0,1,2,3,4,5] Part 2 Continuing with part 1 change the output of the test, so that it now prints out in sequential order to the end value (only once), but then also counts down to the start value. Again, using no iterative loops, and assuming that both the start and end values will always be positive and that start value will always be less then the end value. There should only be one method with the following signature: void countUpAndDown(int start, int end) { // All code exercise code should go here } Here is example output with start=0 and end=5: [0,1,2,3,4,5,4,3,2,1,0] 中文描述 这里我不按照原文一字一字的翻译,但是尽量按照题目的要求把题目解释清楚。 最简单的描述就是不使用循环,输出 0 到 5,然后同样不是会用循环的方式再次输出 5 到 0。 本题目分 2 部分,第一部分是不使用循环的方式输出 0 到 5,第二部分是不使用循环的方式输出 0 到 5 以后,再输出 5 到 0。 其中需要注意的是 5 只能输出一次。 思路和点评 不使用 For 循环的方式输出 0 到 5 ,我们可以想到有几个方法。 第一个方法可能比较容易想到的就是递归调用,你可以根据输入的值,递归调用需要的次数就可以输出值了。你还可以采用计算机时钟的方式进行输出。 在这里我们采用递归调用的方式进行输出。 源代码 源代码和有关代码的更新请访问 GitHub: https://github.com/cwiki-us/codebank-algorithm/blob/master/src/main/java/com/ossez/codebank/interview/KayakCountUpDown.java 测试类请参考: https://github.com/cwiki-us/codebank-algorithm/blob/master/src/test/java/com/ossez/codebank/interview/tests/KayakTest.java 代码思路请参考: package com.ossez.codebank.interview; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * https://www.cwiki.us/display/ITCLASSIFICATION/Count+Up+Down *…

2018年12月25日 0Comments 1033Browse 0Like Read more
12345…7
Archives
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,289)
    • Confluence (663)
    • Gradle (12)
  • U.S. (343)
  • 文化旅游 (142)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1