usb加密狗許可到期

學習算法第二天,感覺自己真的是個憨憨,看半天解釋都看不懂
總結了一下,我的刷題速度有平均半個小時一道題,腦子真的不夠用,
刷題好慢,有大佬指導一下嗎,分享點經驗啥的
reverse-linked-list
翻轉鏈表
var reverseList = function(head) {
let pre = null;
let cur = head;
while(cur) {
let temp = cur.next;
cur.next = pre;
pre = cur;
cur = temp;
}
return pre;
};
複製代碼是否是合法的IPv4,IPv6
感覺自己是個憨憨,調試了接近30分鐘,
但總算看到了進步,畢竟是沒看答案,做出來了
ip4和ip6區分開,然後進行判斷
function ipV4(ip) {
const arr = ip.split(’.’);
if(arr.length !== 4) {
return false;
}
for (let i = 0; i < arr.length; i++) {
const bool = arr[i] >= 0 && arr[i] <= 255;
const firStr = arr[i].substring(0, 1);
const second = arr[i].substring(1, 2);
if (second && parseInt(firStr) === 0) {
return false;
}
if (arr[i] == ‘’) {
return false;
}
if (!bool || /[^0-9]/gi.test(arr[i])) {
return false;
}
}
return true;
}

function ipV6(ip) {
const arr = ip.split(’:’);
if (arr.length !== 8) {
return false;
}
for (let i = 0; i < arr.length; i++) {
const bool2 = arr[i].length > 4;
const bool1 = /[^a-f0-9]/gi.test(arr[i]);
if (arr[i] === ‘’) {
return false;
}
if (bool2 || bool1) {
return false;
}
}
return true;
}

var validIPAddress = function(IP) {
const IsIpV4 = IP.includes(’.’);
if (IsIpV4) {
return ipV4(IP) ? ‘IPv4’ : ‘Neither’
} else {
return ipV6(IP) ? ‘IPv6’ : ‘Neither’
}
};
複製代碼longest-substring-without-repeating-characters
這道題還是不會,學習了用兩個指針的這種方法
function lengthOfLongestSubstring(s) {
let max = 0;
let start = 0;
let st = {};
for (let end = 0; end < s.length; end++) {
const key = s[end];
if (st[key]) {
start = Math.max(st[key], start)
}
max = Math.max(max, end - start + 1);
st[key] = end + 1;
}
return max;
}
複製代碼merge-two-sorted-lists
寫了這道題讓我走出了一個誤區,就是給我一個鏈表我要是給next賦值,並不是放在最後面,是直接把這個鏈表的next值改了,如果是原來長度是5,現在給next賦值以後,他的長度就是2了,要走出這個誤區
var mergeTwoLists = function(l1, l2) {
const list = new ListNode(0);
let prev = list;
while(l1 && l2) {
let temp;
if (l1.val > l2.val) {
prev.next = l2;
l2 = l2.next;
} else {
prev.next = l1;
l1 = l1.next;
}
prev = prev.next;
}

if (l1) prev.next = l1;
if (l2) prev.next = l2;
return list.next;
};
複製代碼validate-binary-search-tree
var isValidBST = function(root) {
const stack = [{
root,
lower: -Infinity,
upper: Infinity,
}];
while (stack.length > 0) {
const params = stack.shift();
root = params.root;
lower = params.lower;
upper = params.upper;
if (!root) {
continue;
}
const val = root.val;
if (val <= lower || val >= upper) {
return false;
}
stack.push({root: root.right, lower: val, upper: upper})
stack.push({root: root.left, lower: lower, upper: val})
}
return true;
};
複製代碼best-time-to-buy-and-sell-stock
var maxProfit = function(prices) {
if (prices.length < 2) {
return 0;
}
let max = 0;
let min = prices[0];
for (let i = 0; i < prices.length; i++) {
max = Math.max(max, prices[i] - min);
min = Math.min(prices[i], min)
}
return max;
};
複製代碼reverse-integer
學習了怎麼取反的方式
var reverse = function(x) {
let res = 0;
const max = Math.pow(2, 31) -1 ;
const min = -Math.pow(2, 31)
while (x !== 0) {
res = res * 10 + x % 10;
x = ~~(x / 10);
}
if (res > max) return 0;
if (res < min) return 0;
return res;
};
複製代碼min-stack
彷彿漸入佳境,雖然難度爲爲簡單
就是用兩個數組來存儲,一個是構造的列表,另外一個降序的列表
var MinStack = function() {
this.values = [];
this.min = [];
};

/**

  • @param {number} x
  • @return {void}
    */
    MinStack.prototype.push = function(x) {
    const values = this.values;
    values.push(x);
    const min = this.min;
    if (min.length === 0 || x <= min[min.length - 1]) {
    min.push(x)
    }
    };

/**

  • @return {void}
    */
    MinStack.prototype.pop = function() {
    const value = this.values.pop();
    const min = this.min;
    if (min[min.length - 1] === value) {
    min.pop();
    }
    };

/**

  • @return {number}
    */
    MinStack.prototype.top = function() {
    const values = this.values;
    return values[values.length - 1]
    };
    複製代碼diameter-of-binary-tree
    感覺有那麼一點遞歸的意識了加油
    var diameterOfBinaryTree = function(root) {
    let result = 0;
    function deep(root) {
    if (!root) return -1;
    let left = root.left ? deep(root.left) + 1 : 0;
    let right = root.right ? deep(root.right) + 1 : 0;

     result = Math.max(left + right, result);
     return Math.max(left, right);
    

    }
    deep(root);
    return result;
    };
    複製代碼merge-sorted-array
    似乎智商又佔領高地了
    var merge = function(nums1, m, nums2, n) {
    for (let i = 0; i < n; i++) {
    nums1[m] = nums2[i];
    m += 1;
    }
    nums1.sort((a, b) => {
    return a - b;
    })
    };

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章