[劍指Offer]---17-打印從1到最大的n位數與18-刪除鏈表的節點

17-打印從1到最大的n位數

描述

輸入數字 n,按順序打印出從 1 到最大的 n 位十進制數。比如輸入 3,則打印出 1、2、3 一直到最大的 3 位數 999。

示例 1:

輸入: n = 1
輸出: [1,2,3,4,5,6,7,8,9]

 

說明:

  • 用返回一個整數列表來代替打印
  • n 爲正整數
class Solution {
public:
    vector<int> printNumbers(int n) {
        int res = pow(10, n);
        vector<int> tmp;
        for (int i = 1; i < res; ++i) tmp.push_back(i);
        return tmp; 
    }
};

18-刪除鏈表的節點

描述

給定單向鏈表的頭指針和一個要刪除的節點的值,定義一個函數刪除該節點。

返回刪除後的鏈表的頭節點。

注意:此題對比原題有改動

示例 1:

輸入: head = [4,5,1,9], val = 5
輸出: [4,1,9]
解釋: 給定你鏈表中值爲 5 的第二個節點,那麼在調用了你的函數之後,該鏈表應變爲 4 -> 1 -> 9.
示例 2:

輸入: head = [4,5,1,9], val = 1
輸出: [4,5,9]
解釋: 給定你鏈表中值爲 1 的第三個節點,那麼在調用了你的函數之後,該鏈表應變爲 4 -> 5 -> 9.
 

說明:

題目保證鏈表中節點的值互不相同
若使用 C 或 C++ 語言,你不需要 free 或 delete 被刪除的節點

ListNode* deleteNode(ListNode* head, ListNode* tobeDelete) {
    if(!head || !tobeDelete) return nullptr;
    if(tobeDelete->next) {
        ListNode *next = tobeDelete->next;
        tobeDelete->val = next->val;
        tobeDelete->next = next->next;
        delete next;
    } else {
        if(head->next) {
            ListNode *cur = head;
            while(cur->next != tobeDelete) cur = cur->next;
            ListNode *next = cur->next;
            cur->next = nullptr;
            delete next;
        } else head = nullptr;
    }
    return head;
}

 

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