1. 程式人生 > >leetcode刷題(第一天)

leetcode刷題(第一天)

1.two sum:

解法一:

function sum(arr,target){
            var len = arr.length;
            for(var i=0;i<len;i++){
                for(var j=0;j<len;j++){
                    if(i!=j){
                        var sum = arr[i]+arr[j];
                        if(sum === target){
                            return [i,j];
                        }
                    }
                }
            }
        }

解法二:(更優)
        var twoSum = function(nums, target) {
            let obj = [];
            var arr = [];
            for(let i = 0; i < nums.length; i++) {
            let othNum = target - nums[i];
            let othIndex = nums.indexOf(othNum);
            if(othIndex != -1 && othIndex != i) {
            arr.push( i, othIndex);
            break;
            }
            }
            return arr;
        };
        var arr = [2,7,3,5];
        console.log(twoSum(arr,9));[0,1];

2.addTwoNumbers

陣列形式傳參:

[2,6,4] [5,4,3]

結果:

[7,0,8]

function ListNode(val) {
          this.val = val;
          this.next = null;
         }
        var addTwoNumbers = function(l1, l2) {

            /* step() function recursively iterates through a ListNode linked list */
            const step = (l1, l2, carry=0) => {
                /* l1 or l2 can be null - double bang to cast to bool for null check */
                const sum = (!!l1 ? l1.val : 0) + (!!l2 ? l2.val : 0) + carry
                let listnode = new ListNode(sum)

                /* if either l1.next exists or l2.next exists */
                if ((!!l1 && !!l1.next) || (!!l2 && !!l2.next)) {
                    listnode.next = step(
                        !!l1 ? l1.next : null, 
                        !!l2 ? l2.next : null, 
                        sum > 9 ? 1 : 0
                    )
                } else if (sum > 9) {
                    /* final carry */
                    listnode.next = new ListNode(1)
                }

                /* only keep LSD */
                //這裡slice的目的是假如和是兩位數,保留各位,即使是一位數以可以保留個位(始終保留各位)
                listnode.val = parseInt(listnode.val.toString().slice(-1))
                return listnode;
            }

            return step(l2, l1)
        };
 

相關推薦

leetcode第一

1.two sum: 解法一: function sum(arr,target){             var len = arr.length;             for(var i=0;i<len;i++){                 for(v

使用pythonLeetcode演算法第一

明年六月份開始找工作,因此從這周開始刷題,希望記錄一下刷題的過程,由於種種原因選擇了python進行刷題,我會在每週的週日記錄下本週在Leetcode中刷過的題,並附上程式碼以及心得,以作備忘。。。。。 Two Sum 第1題 英文描述:Given

leetcode java版本

1、leetcode 1 給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2

LeetCode記錄第一

Jewels and Stones原題目:You're given strings J representing the types of stones that are jewels, and S representing the stones you have.  Eac

leetcode 1--- 兩數之和

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例:   給定 nums = [2, 7, 11, 15], target = 9   因為 nums[0] + nums[1] = 2 + 7 = 9   所以返回 [0

leetcode 2--- 兩數相加

nullptr solution 原因 == 表示 node etc 數字 個數字 給定兩個非空鏈表來表示兩個非負整數。位數按照逆序方式存儲,它們的每個節點只存儲單個數字。將兩數相加返回一個新的鏈表。 你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。 示例:   輸

LeetCodeJava

第一題 class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<Integer, Integer>()

leetcode 599

最近在刷LeetCode,從簡單的開始刷起,補一下自己code和演算法基礎。 下面是dict方面的題目: 主要用到了dict兩個主要的屬性: ①enumerate() enumerate(sequence, [start=0]) sequence -- 一個序列、迭代器或其他支援

LeetCode

LeetCode 是個著名的程式設計題庫,裡邊有很多面試、演算法題目,多刷刷對提高程式設計水平很有幫助,避免因為天天寫業務程式碼而停滯不前。最近玩了下挺有意思的,決定慢慢的刷起來,在這裡記錄一下我的刷

LeetCodePython——每個節點的右向指標

題目描述 給定一個二叉樹 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } 填充它的每個 next 指標,讓這個指標指向其下一個右側節點。

使用pythonLeetcode演算法第二週

第二週了。。。又刷了一週,這周明顯感覺刷起來更順了,加油!!!! Pascal’s Triangle 英文描述: Given numRows, generate the first numRows of Pascal’s triangle. 例子:

leetcode python之漢明距離

兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。注意:0 ≤ x, y < 231.示例:輸入: x = 1, y = 4輸出: 2解釋:1 (0 0 0 1)4 (0 1 0 0)↑ ↑上面的箭頭

LeetCode48--Remove Duplicates from Sorted List II

cur表示當前所在的Node,對於重複出現的Node會移到最後一個。 pre記錄結果,res用於返回,pre的更改會體現在res上。 如果pre.next == cur,則說明沒有重複,此時pre = pre.next Node進入res; 否則,則重複,只是將pre.next 移到下

LeetCode46--Search in Rotated Array

特別處理等於的情況 class Solution(object): def search(self, nums, target): """ :type nums: List[int] :type target: int

LeetCode50--Word Search

DFS演算法 class Solution(object): def exist(self, board, word): """ :type board: List[List[str]] :type word: str

LeetCode49--Minimum Window Substring

class Solution(object): def minWindow(self, s, t): """ :type s: str :type t: str :rtype: str """

開始在LeetCode1-9

因為兩週前,對繼續讀理論書有點抗拒,所以想找點可以直接動手做的事,後來就找到了LeetCode。 到目前在LeetCode上完成了前9道題。 比較考腦子,就算把功能完成了,但隨後LeetCode顯示的排名也會讓你想繼續想如何優化已經寫好的程式碼,往往優化

LeetCode —— 整數拆分

題目:給定一個正整數 n,將其拆分為至少兩個正整數的和,並使這些整數的乘積最大化。 返回你可以獲得的最大乘積。例如,給定 n = 2,返回1(2 = 1 + 1);給定 n = 10,返回36(10 = 3 + 3 + 4)。注意:你可以假設 n 不小於2且不大於58。分析:

LeetCode python

移動零給定一個數組 nums, 編寫一個函式將所有 0 移動到它的末尾,同時保持非零元素的相對順序。例如, 定義 nums = [0, 1, 0, 3, 12],呼叫函式之後, nums 應為 [1, 3, 12, 0, 0]。注意事項:必須在原陣列上操作,不要為一個新陣列分

LeetCode

LeetCode 是個著名的程式設計題庫,裡邊有很多面試、演算法題目,多刷刷對提高程式設計水平很有幫助,避免因為天天寫業務程式碼而停滯不前。最近玩了下挺有意思的,決定慢慢的刷起來,在這裡記錄一下我的刷