美文网首页
Day17 删除链表的节点 + 包含min函数的栈 +从上到下

Day17 删除链表的节点 + 包含min函数的栈 +从上到下

作者: 吃掉夏天的怪物 | 来源:发表于2021-06-29 11:51 被阅读0次

    Day17 的题都非常简单,只需要简略看一遍就好。注意一些细节问题。

    TODO:

    1. 掌握双端队列的用法

    剑指 Offer 18. 删除链表的节点(简单)

    class Solution {
    public:
       ListNode* deleteNode(ListNode* head, int val) {
           ListNode* dummy = new ListNode(0);
           dummy->next = head;
           ListNode* prev = dummy, *ne=head;
           while(ne != nullptr){
               if(ne->val == val){
                   prev->next = ne->next;
               }
               prev = ne;
               ne = ne->next;    
           }
           return dummy->next;
       }
    };
    

    写的思路和题解差不多

    剑指 Offer 30. 包含min函数的栈(简单)

    如果能用双端队列就很简单。哦不对,用栈也对啊 ! 下面代码将deque<int> deq;改为stack<int> minStk也可以。

    class MinStack {
    public:
        /** initialize your data structure here. */
        deque<int> deq;
        stack<int> stk;
        MinStack() {
          
        }
        
        void push(int x) {
            if(deq.empty() || deq.back() >= x){
                deq.push_back(x);
            }
            stk.push(x);
        }
        
        void pop() {
            int wait_delete = stk.top();
            stk.pop();
            if(deq.back() == wait_delete){
                deq.pop_back();
            }        
        }
        
        int top() {
            return stk.top();
        }
        
        int min() {
            return deq.back();
        }
    };
    

    剑指 Offer 32 - II. 从上到下打印二叉树 II(简单)

    似乎就是一个简单的层序遍历,没有什么难的。

    class Solution {
    public:
        vector<vector<int>> levelOrder(TreeNode* root) {
            if(root == nullptr) return {};
            TreeNode* ptr = root;
            queue<TreeNode*> quenode;
            quenode.push(root);
            vector<vector<int>> res;
            while(!quenode.empty()){
                int cnt = quenode.size();
                vector<int> levelRes;
                for(int i = 0; i < cnt; i++ ){
                    TreeNode* tempNode = quenode.front();
                    quenode.pop();
                    levelRes.push_back(tempNode->val);
                    if(tempNode->left) quenode.push(tempNode->left);
                     if(tempNode->right) quenode.push(tempNode->right);
                }
                res.push_back(levelRes);
            }
            return res;
        }
    };
    

    相关文章

      网友评论

          本文标题:Day17 删除链表的节点 + 包含min函数的栈 +从上到下

          本文链接:https://www.haomeiwen.com/subject/esipyltx.html