国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

面試經(jīng)典150題(1)

這篇具有很好參考價值的文章主要介紹了面試經(jīng)典150題(1)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

面試經(jīng)典150題(1)

前言

今天開始我將陸續(xù)為大家更新面試經(jīng)典150題中較難理解的題目。今天我為大家分享的是,除自身以外數(shù)組的乘積、跳躍游戲| 和 跳躍游戲||。

除自身以外數(shù)組的乘積

除自身以外數(shù)組的乘積

要求

給你一個整數(shù)數(shù)組 nums,返回 數(shù)組 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘積 。

題目數(shù)據(jù) 保證 數(shù)組 nums之中任意元素的全部前綴元素和后綴的乘積都在 32 位 整數(shù)范圍內(nèi)。

請不要使用除法,且在 O(n) 時間復雜度內(nèi)完成此題

示例 1:

輸入: nums = [1,2,3,4]
輸出: [24,12,8,6]
示例 2:

輸入: nums = [-1,1,0,-3,3]
輸出: [0,0,9,0,0]

class Solution {
    public int[] productExceptSelf(int[] nums) {

    }
}

思路

按照一般的思路,我們可能會想:先將數(shù)組中所有的元素相乘得到一個sum,然后再遍歷一遍數(shù)組,answer[i] = sum / nums[i],如果nums[i] = 0,answer[i] = sum。但是這個題目要求我們不使用除法,那么我們該怎么辦呢?因為是除自身以外的數(shù)組的乘積,自身以外的數(shù)組被分為左右兩部分,我們只需要將 左邊部分數(shù)組元素的乘積 x 右邊部分數(shù)組元素的乘積 就得到除自身以外的數(shù)組的乘積。所以我們可以使用兩個數(shù)組L和R來分別存儲數(shù)組第 i 個元素左邊部分數(shù)組元素的乘積和右邊部分數(shù)組元素的乘積,最后再遍歷一遍數(shù)組,answer[i] = L[i] * R[i]。

面試經(jīng)典150題(1)

代碼

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int n = nums.length;
        int[] answer = new int[n];
        int[] L = new int[n];
        int[] R = new int[n];
        L[0] = 1;
        for(int i = 1; i < n; i++) {
        //L[i]等于前i-2個數(shù)的乘積乘上第i-1個數(shù)
            L[i] = L[i-1] * nums[i-1];
        } 
        R[n-1] = 1;
        for(int i = n - 2; i >= 0; i--) {
        //R[i]等于后 length-i-2 個數(shù)的乘積乘上第 length-i-1個數(shù)
            R[i] = R[i+1] * nums[i+1];
        }

        for(int i = 0; i < n; i++) {
            answer[i] = L[i] * R[i];
        }

        return answer;
    }
}

面試經(jīng)典150題(1)

跳躍游戲|

跳躍游戲|

要求

給定一個非負整數(shù)數(shù)組 nums ,你最初位于數(shù)組的 第一個下標 。

數(shù)組中的每個元素代表你在該位置可以跳躍的最大長度。

判斷你是否能夠到達最后一個下標。

示例 1:

輸入:nums = [2,3,1,1,4]
輸出:true
解釋:可以先跳 1 步,從下標 0 到達下標 1, 然后再從下標 1 跳 3 步到達最后一個下標。
示例 2:

輸入:nums = [3,2,1,0,4]
輸出:false
解釋:無論怎樣,總會到達下標為 3 的位置。但該下標的最大跳躍長度是 0 , 所以永遠不可能到達最后一個下標。

class Solution {
    public int jump(int[] nums) {

    }
}

題解

其實這個題目可以換一種理解方式:在某位置的跳躍范圍內(nèi)時候有某一位置可以跳躍到最后一個下標處。我們可以使用 rightmost 來記錄在某位置的跳躍范圍內(nèi)的最大跳躍位置, 最大跳躍位置 = i + nums[i] 如果 rightmost >= length-1,那么說明可以到達最后一個下標處。

面試經(jīng)典150題(1)

代碼

class Solution {
    public boolean canJump(int[] nums) {
        int n = nums.length;
        int rightmost = 0;
        for(int i = 0; i < n; i++) {
            if(i <= rightmost) {
                rightmost = Math.max(rightmost,i + nums[i]);
                if(rightmost >= n-1) {
                    return true;
                }
            }
        }
        return false;
    }
}

面試經(jīng)典150題(1)

跳躍游戲||

跳躍游戲||

要求

給定一個長度為 n 的 0 索引整數(shù)數(shù)組 nums。初始位置為 nums[0]。

每個元素 nums[i] 表示從索引 i 向前跳轉(zhuǎn)的最大長度。換句話說,如果你在 nums[i] 處,你可以跳轉(zhuǎn)到任意 nums[i + j] 處:

0 <= j <= nums[i]
i + j < n
返回到達 nums[n - 1] 的最小跳躍次數(shù)。生成的測試用例可以到達 nums[n - 1]。

示例 1:

輸入: nums = [2,3,1,1,4]
輸出: 2
解釋: 跳到最后一個位置的最小跳躍數(shù)是 2。
從下標為 0 跳到下標為 1 的位置,跳 1 步,然后跳 3 步到達數(shù)組的最后一個位置。
示例 2:

輸入: nums = [2,3,0,1,4]
輸出: 2

class Solution {
    public int jump(int[] nums) {

    }
}

題解

因為題目中說生成的測試用例可以到達nums[i-1],求最小的跳躍次數(shù)。所以我們每次跳躍的位置就是在跳躍區(qū)間中能跳躍最遠的位置。并且在遍歷數(shù)組時,我們不訪問最后一個元素,這是因為在訪問最后一個元素之前,我們的邊界一定大于等于最后一個位置,否則就無法跳到最后一個位置了。如果訪問最后一個元素,在邊界正好為最后一個位置的情況下,我們會增加一次「不必要的跳躍次數(shù)」,因此我們不必訪問最后一個元素。
面試經(jīng)典150題(1)

代碼

class Solution {
    public int jump(int[] nums) {
        int n = nums.length;
        int rightmost = 0;
        //end用來記錄跳躍區(qū)間
        int end = 0;
        int step = 0;
        for(int i = 0; i < n - 1; i++) {
            rightmost = Math.max(rightmost,i + nums[i]);
            if(i == end) {
                end = rightmost;
                step++;
            }
        }

        return step;
    }
}

面試經(jīng)典150題(1)文章來源地址http://www.zghlxwxcb.cn/news/detail-495418.html

到了這里,關(guān)于面試經(jīng)典150題(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • 面試經(jīng)典150題(88-89)

    leetcode 150道題 計劃花兩個月時候刷完,今天(第四十四天)完成了2道(88-89)150: 88.(22. 括號生成) 題目描述: 第一版(沒通過,我想法是 ()的全排列然后找出來符合的并且去重。。超時了) 第二版(看了解題) 89.(79. 單詞搜索)題目描述: 第一版(沒超時,但是效率墊

    2024年01月18日
    瀏覽(17)
  • 面試經(jīng)典150題(78-81)

    leetcode 150道題 計劃花兩個月時候刷完,今天(第三十六天)完成了4道(78-81)150: 78.(230. 二叉搜索樹中第K小的元素)題目描述: 第一版(銘記??!二叉搜索樹的中序遍歷為遞增的) 79.(98. 驗證二叉搜索樹)題目描述: 第一版(我第一反應就是遞歸,但是遞歸了好久沒弄出

    2024年02月02日
    瀏覽(17)
  • 面試經(jīng)典150題(85-87)

    leetcode 150道題 計劃花兩個月時候刷完,今天(第四十三天)完成了3道(85-87)150: 85.(77. 組合)題目描述: 第一版(昨天就是這個卡了好久沒弄出來,今天還是沒思路啊。??戳私忸},感覺都是一個for 然后for里面嵌套??纯唇忸}的代碼吧) 86.(46. 全排列)題目描述: 第一版

    2024年01月18日
    瀏覽(15)
  • 【面試經(jīng)典150 | ?!孔钚? decoding=
  • 面試經(jīng)典150題——生命游戲

    面試經(jīng)典150題——生命游戲

    2.1 思路一——暴力求解 之所以先暴力求解,是因為我開始也沒什么更好的思路,所以就先寫一種解決方案,沒準寫著寫著就來新的靈感了。暴力求解思路還是很簡單的,就是嘗試遍歷面板的每個格子,判斷其周圍八個位置的狀態(tài)(對于邊角需要特殊處理),根據(jù)邊角種存在

    2024年02月21日
    瀏覽(22)
  • 【面試經(jīng)典150 | 數(shù)組】移除元素

    【面試經(jīng)典150 | 數(shù)組】移除元素

    本專欄專注于分析與講解【面試經(jīng)典150】算法,兩到三天更新一篇文章,歡迎催更…… 專欄內(nèi)容以分析題目為主,并附帶一些對于本題涉及到的數(shù)據(jù)結(jié)構(gòu)等內(nèi)容進行回顧與總結(jié),文章結(jié)構(gòu)大致如下,部分內(nèi)容會有增刪: Tag:介紹本題牽涉到的知識點、數(shù)據(jù)結(jié)構(gòu); 題目來源:

    2024年02月09日
    瀏覽(33)
  • 【面試經(jīng)典150 | 矩陣】矩陣置零

    【面試經(jīng)典150 | 矩陣】矩陣置零

    本專欄專注于分析與講解【面試經(jīng)典150】算法,兩到三天更新一篇文章,歡迎催更…… 專欄內(nèi)容以分析題目為主,并附帶一些對于本題涉及到的數(shù)據(jù)結(jié)構(gòu)等內(nèi)容進行回顧與總結(jié),文章結(jié)構(gòu)大致如下,部分內(nèi)容會有增刪: Tag:介紹本題牽涉到的知識點、數(shù)據(jù)結(jié)構(gòu); 題目來源:

    2024年02月06日
    瀏覽(27)
  • 【面試經(jīng)典150 | 動態(tài)規(guī)劃】零錢兌換

    【面試經(jīng)典150 | 動態(tài)規(guī)劃】零錢兌換

    【動態(tài)規(guī)劃】【數(shù)組】 322. 零錢兌換 定義狀態(tài) dp[i] 表示湊成總金額的最少硬幣個數(shù)。 狀態(tài)轉(zhuǎn)移 從小到大枚舉要湊成的金額 i ,如果當前的金額可以使用面額數(shù)組中的某個面額 coin 湊成總金額的一部分,則可以更新 d p [ i ] = m i n ( d p [ i ] , d p [ i ? c o i n ] + 1 ) dp[i] = min(dp[i

    2024年04月16日
    瀏覽(27)
  • 面試經(jīng)典150題——Day29

    15. 3Sum Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]] such that i != j, i != k, and j != k, and nums[i] + nums[j] + nums[k] == 0. Notice that the solution set must not contain duplicate triplets. Example 1: Input: nums = [-1,0,1,2,-1,-4] Output: [[-1,-1,2],[-1,0,1]] Explanation: nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 =

    2024年02月06日
    瀏覽(22)
  • 面試經(jīng)典150題——Day18

    12. Integer to Roman Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, 2 is written as II in Roman numeral, just two one’s added together. 12 is written as XII, which is simply X + II. The number 27 is written as XXVII, which is XX + V + II. Roman numerals are u

    2024年02月08日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包