You are given an integer array nums. You are initially positioned at the array's first index, and each element in the array represents your maximum jump length at that position.

Return true if you can reach the last index, or false otherwise.

Example 1:

Input: nums = [2,3,1,1,4]
Output: true
Explanation: Jump…

--

--

經歷過不同的公司面試之後,察覺到在介紹完自己跟熟悉的tool以及工作經驗相關背景,也漸漸抓到面試官們喜歡問的一些問題,尤其是跟自己熟悉的tool有強烈關聯。

一方面是為了考察面試者對於工具的使用熟悉程度之外,也希望透過筆記記錄的方式來加深對於不管是工具還是coding理解程度。

以下是後端工程師面試常碰到的技術問題:

Q1. What is abstraction?

Abstraction可以理解為抽象,也屬於OOP (Object-oriented programming)語言裡四大重要特性之一。

它的特性是:

  • 抽象類別無法建立物件 (Abstract class cannot build an object.)
  • 抽象函數不用來處理方式 (Abstract class does not implement methods.)

用以下的生活例子來做解釋的話,會幫助在看這篇文章的人更容易理解。
在這邊,我創建的抽象類別是Human。那麼透過子類別Asian, 新增了3個不同屬性的特質,分別是姓名(name)、年齡(age)、愛吃的食物(food),然後新創的處理方法為介紹(introduce)。

Example of Abstract implementation

由於Asian繼承了Human這個父類別的定義以及其抽象方法,所以在main類別裡面新增了兩個人分別為 a1, a2。分別把人名、年齡以及喜歡吃的食物塞入Asian這個物件裡面,那麼再透過introduce這個抽象方法來實踐出來,最後就可以得到以下的輸出結果。

Result of implementing abstract

--

--

Given an integer array nums, return the length of the longest strictly increasing

subsequence

.

Example 1:

Input: nums = [10,9,2,5,3,7,101,18]
Output: 4
Explanation: The longest increasing subsequence is [2,3,7,101], therefore the length is 4.

Example 2:

Input: nums = [0,1,0,3,2,3]
Output: 4

Example 3:

Input: nums = [7,7,7,7,7,7,7]
Output: 1

Constraints:

  • 1 <= nums.length <= 2500
  • -104 <= nums[i] <= 104

Follow up: Can you come up with an algorithm that runs in O(n log(n)) time complexity?

Solution:

Time complexity: O(Nlog^N)

Space complexity: O(N)

LC — Longest Increasing Subsequence (Blind Curated 18)

--

--