摘要:一兩遍循環(huán),暴力破解代碼如下時(shí)間復(fù)雜度提交,結(jié)果執(zhí)行時(shí)間。。。。。可以說龜速了二兩遍這個(gè)方法是看了的解決方案,但它是代碼,開始不知道,其實(shí)的數(shù)組就是實(shí)現(xiàn)的,后面看了下面兩片文章的介紹,才理解,解決的。
1. Two Sum
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 input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].一、兩遍循環(huán),暴力破解
代碼如下
function twoSum($nums, $target) { for($i=0;$i時(shí)間復(fù)雜度 O(n^2 )
提交,結(jié)果執(zhí)行時(shí)間1968 ms。。。。。
二、兩遍hash
可以說龜速了這個(gè)方法是看了leetcode的解決方案,但它是java代碼,開始不知道,其實(shí)php的數(shù)組就是hash實(shí)現(xiàn)的,后面看了下面兩片文章的介紹,才理解,解決的。
https://www.cnblogs.com/s-b-b...
https://www.cnblogs.com/shang...代碼如下
function twoSum2(array $nums , $target) { $res = []; $nums_match = []; foreach ($nums as $nums_k => $nums_v){ if(!isset($nums_match[$target-$nums_v])){ $nums_match[$target-$nums_v] = $nums_k; } } foreach ($nums as $nums_k => $nums_v){ if (isset($nums_match[$nums_v]) && $nums_match[$nums_v] != $nums_k) { $res[] = $nums_k; $res[] = $nums_match[$nums_v]; return $res; } } }時(shí)間復(fù)雜度O(n)
三、一遍hash
執(zhí)行時(shí)間24 ms ,提升很大這是在兩邊hash的基礎(chǔ)上進(jìn)行的優(yōu)化
代碼如下
function twoSum($nums, $target) { $nums_match = []; foreach ($nums as $nums_k => $nums_v){ if((isset($nums_match[$target-$nums_v]))){ return array($nums_match[$target-$nums_v],$nums_k); } $nums_match[$nums_v] = $nums_k; } }時(shí)間復(fù)雜度O(n)
執(zhí)行時(shí)間16 ms
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/31350.html
摘要:題目描述給出兩個(gè)非空的鏈表用來表示兩個(gè)非負(fù)的整數(shù)。如果,我們將這兩個(gè)數(shù)相加起來,則會(huì)返回一個(gè)新的鏈表來表示它們的和。您可以假設(shè)除了數(shù)字之外,這兩個(gè)數(shù)都不會(huì)以開頭。 題目描述: 給出兩個(gè) 非空 的鏈表用來表示兩個(gè)非負(fù)的整數(shù)。其中,它們各自的位數(shù)是按照 逆序 的方式存儲(chǔ)的,并且它們的每個(gè)節(jié)點(diǎn)只能存儲(chǔ) 一位 數(shù)字。如果,我們將這兩個(gè)數(shù)相加起來,則會(huì)返回一個(gè)新的鏈表來表示它們的和。您可以假設(shè)除...
摘要:給定表,存在函數(shù),對任意給定的關(guān)鍵字值,代入函數(shù)后若能得到包含該關(guān)鍵字的記錄在表中的地址,則稱表為哈希表,函數(shù)為哈希函數(shù)。而中的對象就是基于哈希表結(jié)構(gòu),所以我們構(gòu)造一個(gè)對象即可,是當(dāng)前遍歷到的值,是其與目標(biāo)值的差。 大部分玩前端的小伙伴,在算法上都相對要薄弱些,畢竟調(diào)樣式、調(diào)兼容就夠掉頭發(fā)的了,哪還有多余的頭發(fā)再去折騰。 確實(shí)在前端中需要使用到算法的地方是比較少,但若要往高級方向發(fā)展,...
摘要:題目描述給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值,找出數(shù)組中和為目標(biāo)值的兩個(gè)數(shù)。你可以假設(shè)每個(gè)輸入只對應(yīng)一種答案,且同樣的元素不能被重復(fù)利用。 題目描述 給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值,找出數(shù)組中和為目標(biāo)值的兩個(gè)數(shù)。 你可以假設(shè)每個(gè)輸入只對應(yīng)一種答案,且同樣的元素不能被重復(fù)利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因?yàn)?nums[0] + nums[...
摘要:月下半旬攻略道題,目前已攻略題。目前簡單難度攻略已經(jīng)到題,所以后面會(huì)調(diào)整自己,在刷算法與數(shù)據(jù)結(jié)構(gòu)的同時(shí),攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚有什么區(qū)別...
摘要:公眾號(hào)愛寫給定一個(gè)已按照升序排列的有序數(shù)組,找到兩個(gè)數(shù)使得它們相加之和等于目標(biāo)數(shù)。函數(shù)應(yīng)該返回這兩個(gè)下標(biāo)值和,其中必須小于。示例輸入輸出解釋與之和等于目標(biāo)數(shù)。 公眾號(hào): 愛寫bug(ID:icodebugs) 給定一個(gè)已按照升序排列 的有序數(shù)組,找到兩個(gè)數(shù)使得它們相加之和等于目標(biāo)數(shù)。 函數(shù)應(yīng)該返回這兩個(gè)下標(biāo)值 index1 和 index2,其中 index1 必須小于 index2。...
閱讀 1613·2021-11-23 09:51
閱讀 1184·2019-08-30 13:57
閱讀 2264·2019-08-29 13:12
閱讀 2018·2019-08-26 13:57
閱讀 1202·2019-08-26 11:32
閱讀 981·2019-08-23 15:08
閱讀 708·2019-08-23 14:42
閱讀 3089·2019-08-23 11:41