1. 程式人生 > >Scala練習題01:找出列表中最後一個元素

Scala練習題01:找出列表中最後一個元素

//     Scala:Find the last element of a list.
//     Scala:找出列表中最後一個元素
//     示例:
//     scala> last(List(1, 1, 2, 3, 5, 8))
//     res0: Int = 8

package com.yl.problem

object Problem01 {
  def main(args: Array[String]){

    //1、Scala內建的方法實現 List.last
    def lastBuiltin[A](ls: List[A]): A = ls.last
    println("Scala內建的方法實現結果:"
+ lastBuiltin(List(1, 1, 2, 3, 5, 8))) println("Scala內建的方法實現結果:" + lastBuiltin(List(1, 3, 4, 5, 7, 9))) //2、利用Scala的模式匹配實現 def lastRecursive[A](ls: List[A]): A = ls match { case h :: Nil => h //一個元素則直接獲取 case _ :: tail => lastRecursive(tail) //剩餘元素列表繼續迴圈執行,直至剩最後一個元素為止
case _ => throw new NoSuchElementException //其他情況丟擲異常 } println("Scala模式匹配實現的結果:" + lastRecursive(List(1, 1, 2, 3, 5, 8))) println("Scala模式匹配實現的結果:" + lastRecursive(List(1, 3, 4, 5, 7, 9))) } }

執行結果:

Scala內建的方法實現結果:8
Scala內建的方法實現結果:9
Scala模式匹配實現的結果:8
Scala模式匹配實現的結果:9

相關推薦

Scala練習題01列表最後一個元素

// Scala:Find the last element of a list. // Scala:找出列表中最後一個元素 // 示例: // scala> la

第一題列表元素的和為一定值的元素下標

題目: Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each inpu

領釦 列表出現一次的數

def one_num(n): d = {} # 建立字典記錄元素的次數 for i in n: # 判斷字典中是否沒有該元素 if i not

列表的使用(append,count,extend,index,pop,remove)dir;列表指定一個或多個元素並刪除

斜體樣式列表:在一個數組裡存或者取多個資訊 列表操作功能有:索引 切片 追加 刪除 長度 迴圈 包含 列表舉例:name_list=[“R”,“u”,“b”,“y”] print(name_list[1]) >>>u pr

資料結構面試題總結5——陣列陣列唯一一個出現一次的元素

問題描述:一個數組其中有一個元素出現了一次(奇次),其他元素都出現兩次(偶數次數),找出出現一次(奇次)的元素。 分析:碰到這種偶次奇次的問題,首先要想一下位運算中的異或。一個數異或本身為0,一個數異或0不變。a ^ a = 0, a ^ 0 = a。 這個題中,我們可以把

百度面試題陣列出現次數超過一半的數

現在有一個數組,已知一個數出現的次數超過了一半,請用O(n)的複雜度的演算法找出這個數。 Thinking……/>/> Thinking……/>/>/> Thinking……/>/>/> Thinking……/>/>/> Think

《劍指Offer》面試題陣列有3個出現一次的數字

題目 一個int陣列中有三個數字a、b、c只出現一次,其他數字都出現了兩次。請找出三個只出現一次的數字。 思路 由於3個數字出現一次,其他數字均出現兩次,因此可以得到n一定為奇數。 3個只出現一次的數字,他們的bit位肯定不可能全部相同,也就是說

經典演算法題1陣列只出現一次的數字,其它數字都出現了兩次

題目:一個整型數組裡除了一個數字之外,其它的數字都出現了兩次。請寫程式找出這個只出現一次的數字。要求時間複雜度是O(n),空間複雜度是O(1)。 分析:由於題目要求時間複雜度為O(n),所以先排序然後比較相鄰數字是否相同的思路被排除。             空間複雜度是O

演算法習題61陣列兩個只出現一次的數字:一個整型數組裡除了兩個數字之外,其他的數字都出現了兩次

找出陣列中兩個只出現一次的數字 題目:一個整型數組裡除了兩個數字之外,其他的數字都出現了兩次。 請寫程式找出這兩個只出現一次的數字。要求時間複雜度是 O(n),空間複雜度是 O(1)。 --------------------------------------------

陣列陣列重複元素最多的數

題目描述: 如何找出陣列中重複元素最多的數 思路: 使用Map對映表記錄每一個元素出現的次數,然後判斷次數大小,進而找出重複次數最多的元素。key表示陣列的元素,value表示這個元素在陣列中出現的次數。最後對map進行遍歷。 程式碼: /** * 使用map

python列表大於某個閾值的資料段

該演算法實現對列表中大於某個閾值(比如level=5)的連續資料段的提取,具體效果如下: 找出list裡面大於5的連續資料段: list = [1,2,3,4,2,3,4,5,6,7,4,6,7,8,5,6,7,3,2,4,4,4,5,3,6,7,8,9,8,6,1] 輸出: [[6

前端演算法題陣列第k大的數字出現多少次

題目:給定一個一維陣列,如[1,2,4,4,3,5],找出陣列中第k大的數字出現多少次。 例如:第2大的數是4,出現2次,最後輸出 4,2 function getNum(arr, k){ // 陣列排序->從大到小 arr.sort((a, b)=>{

問題6 字串出現次數最多的字母及其出現的次數

這好像是華為機試的一道題目,我採用JAVA來完成,用JAVA也可以用其他方法。 我用一個比較簡單的方法,程式碼如下: public class Str{ public static void main(String[] args){ String str =

數字串字串連續最長的數字串

【面試題目】請在一個字串中找出連續最長的數字串,並把這個串的長度返回:如果存在長度相同的連續數字串,返回最後一個連續數字串。 【函式原型】unsigned int continumax(char *pOutputstr, char *inputstr); 注意:數字串只需要

Problem B: 零起點學演算法81——陣列最大元素的位置(下標值

#include<stdio.h> int main(void) { int n,a[10],i,max; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) scanf("%d",

javaSE (三十二)字串重複的元素並寫入檔案、模擬正版軟體使用次數期限、獲取資料夾下的全部java檔案

1、找出字串中重複的元素並寫入檔案: 問題:鍵入(或者從一個檔案中讀取)一個字串,找出字串中重複的元素並寫入檔案 思路: 鍵入字串 map儲存 寫入檔案 程式碼: package cn.njupt; /* * * 鍵入一串字元,計算每個字元出

劍指-OFFER_3 java_在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。 陣列某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列任意一個重複的數字。

題源:  在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。   例如,如果輸入長度為7的陣列{2,3,1,0,2,5,3},那麼對應的輸出是第一個重複的數字

Leetcode421. 陣列兩個元素異或的最大值

Leetcode421. Maximum XOR of Two Numbers in an Array 題目 Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai

陣列任意一個重複出現的數字

一個長度為n的陣列arr,陣列元素範圍為0到n-1,陣列中沒有重複或者有一個或多個重複,如果有重複輸出任意一個重複的,無重複輸出-1。 思路1:時間複雜度O(n),空間複雜度O(n)        使用雜湊表的原理,重新定義一個n長的陣列table(預設值全部為0),遍歷

優雅的ArrayList重複的元素

故意強調了優雅,所以雙迴圈什麼的就別來了...先謝為敬 看到了群裡分享的程式碼,所有自己嘗試了一下,就當是技術積累啊,雖然還有四門期末考,但是還是技術對我的誘惑力更大,請再讓我內心默唸一百遍:考試全部