有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n))
* 例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。
如果 是 {-4,4} 随便返回 -4 或者 4 都可以。
随手写了 scala 代码,看着是比 java 帅多了。
def find(arr: Array[Int]): Int = { def minAbs(before: Int, after: Int) = if ((before + after) >= 0) before else after def part(from: Int, to: Int): Int = { val middle = (to + from) / 2 val middle_value = arr(middle) if (from == to || to == from + 1) middle_value else if (middle_value < 0) part(middle, to) else { val middle_pre = arr(middle - 1) if (middle_pre < 0) minAbs(middle_pre, middle_value) else part(from, middle - 1) } } if (arr.last < 0) arr.last else if (arr.first > 0) arr.first else part(0, arr.length - 1) }
相关推荐
Scala 是一种多范式的编程语言,它融合了面向对象和函数式编程的特性。下面将详细解释题目中涉及的Scala知识点: 1. **var、val 和 def 的区别**: - `var` 定义可变变量,可以多次赋值。 - `val` 定义不可变变量...
### Scala习题精选知识点解析 #### 1. 关于与Scala进行交互的基本方式REPL的说明 - **知识点概述**:REPL(Read-Eval-Print Loop)是一种交互式的编程环境,用户可以在其中输入代码,系统立即执行并显示结果。在...
这通常涉及到一系列编程任务,旨在帮助学生深入理解Scala语言中的函数式编程概念。 **描述分析:** 描述提到这是"Coursera公开课Functional Programming Principles in Scala Week 1的作业",这可能是个小错误,...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,使得它在处理并发和大数据分析方面尤为出色。"快学Scala"系列教程可能涵盖了语言基础、类与对象、高阶函数、模式匹配、类型系统、Actor模型...
这些题目旨在帮助学生实践和巩固上述理论知识,例如编写自己的`map`、`filter`函数,或者使用闭包和模式匹配解决实际问题。通过完成这些作业,学习者可以更深入地理解和运用Scala的函数式编程特性。 总结,...
**描述解读:** 描述提到这是Coursera公开课"Functional Programming Principles in Scala"第一周的作业,包括了代码工程和离线网页题目。这意味着学习者将有机会通过实际编写Scala代码来应用所学理论,并且可以离线...
Scala的语法简洁,表达能力强,可以使得开发者用更少的代码完成相同的功能。学习Scala对于希望成为全栈开发者、从事大数据处理、云计算、分布式计算等领域的专业人士来说尤为重要。 Scala学习技术教程是为初学者...
这个压缩包 "leetCode-Scala-master" 可能包含了更多 Scala 解决 LeetCode 题目的示例,进一步展示了 Scala 在算法挑战中的应用。通过学习和实践这些示例,开发者可以深化对 Scala 语言的理解,并提升解决实际问题的...
在“leetcode-master”目录下,你可以找到这些题目对应的Scala源代码文件。通过学习和理解这些代码,你可以深入掌握Scala语言在处理算法问题时的独特用法和技巧。 在Scala中,你可以体验到模式匹配的便利,利用高阶...
《快学Scala》是Horstmann所著的一本面向初学者的编程教材,旨在帮助读者快速掌握Scala这门多范式编程语言。Scala融合了面向对象和函数式编程的特性,使得它在处理复杂问题时表现出高效且简洁的代码风格。"Scala for...
Scala游乐场2202是针对Scala编程语言的一个学习与实践平台。Scala是一种多范式、静态类型的编程语言,融合了面向对象和函数式编程的特点,使得它在处理复杂问题时具有很高的灵活性和表现力。这个平台可能包含了各种...
Hackerrank是一个全球性的技术招聘平台,它通过一系列的编程挑战和练习来帮助求职者在编码方面提高技能并为职场做好准备。本题解涉及了多个编程语言和算法的概念,下面我将从提供的文件内容中提炼出相关知识点。 ##...
《快学Scala》是一本旨在帮助读者快速掌握Scala编程语言的书籍,其附带的"Scala-for-the-Impatient-Exercises"提供了丰富的练习题,旨在加深对Scala语法和概念的理解。下面将针对这本书的各个章节,逐一解析其中涉及...
【技术类笔试题目-V6.01】是一个针对IT专业人士的笔试题目集,涵盖了C++、Java、Scala、Python等多种编程语言以及算法相关的知识。以下是这些题目涉及的主要知识点的详细说明: 1. **两个有序数组合并**:这道题...
Algorithms When the programmer says "We make ... 然后为了不白学 Scala, 中间也使用了几个月的 Scala. 其中 Kotlin 最多. Accounts: 国内账号: 国际账号: My Plugins Money Never Sleeps! Translators Ascii Arts
冒泡排序、二分查找、快排、归并、二叉树之 Scala 实现等都是常见的手写代码题目。这些题目考察开发者的编程能力、算法思维和数据结构知识。手写 Spark-WordCount 和手写 Spark 程序也是非常重要的题目,考察开发者...
《SwordOffer:剑指offer题解》是针对求职者准备面试的一款宝贵资源,它包含了Java和Scala两种语言的实现,旨在帮助程序员提升算法技能,掌握面试中的常见问题。本资源详细解答了“剑指offer”系列中的所有题目,...
"Scala-katas"这个项目显然是一系列用于练习和提高Scala编程技能的练习题目,通常被称为编程 kata。在编程社区中,kata是一种通过反复练习来提升技能的方法,类似于武术中的动作练习。 Scala-katas中的"main"目录...
#### 一、社交媒体情绪分析 **背景与意义:** 随着社交媒体的兴起,大量的用户数据被生成。对这些数据的情感分析可以帮助企业和机构了解公众意见和社会趋势,进而做出相应的策略调整。 **技术要点:** 1. **数据...
"exercism-scala-master" 这个文件名暗示我们获取的是一个Git仓库的主分支(master)的克隆,通常这样的结构会包含一系列的子目录和文件,分别对应Exercism.io上的不同练习题目。每个练习通常会有单独的目录,包含源...