zoukankan      html  css  js  c++  java
  • 那些让你觉得自己是个傻B的题目集锦(大神的降维打击合集)

    一起过来排好队,进来挨打

    1.Leetcode tag-LinkList [109.convert sorted list to binary search tree](#109.convert sorted list to binary search tree)
    2Leetcode tag-Array[386. Lexicographical Numbers](#386. Lexicographical Numbers)

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        TreeNode* sortedListToBST(ListNode* head) {
            return RecursionListToBST(head,NULL);
        }
        TreeNode* RecursionListToBST(ListNode* head,ListNode *tail){
            // linklist is empty
            if(head==tail)
                return NULL;
            // only one node in the tree
            if(head->next==tail){
                TreeNode *root=new TreeNode(head->val);
                return root;
            }
            // search the middle node 
            // excllent code segment need memorize.
            ListNode *mid=head;
            ListNode *temp=head;
            while(temp!=tail && temp->next!=tail){
                mid=mid->next;
                temp=temp->next->next;
            }
            TreeNode *root=new TreeNode(mid->val);
            root->left=RecursionListToBST(head,mid);
            root->right=RecursionListToBST(mid->next,tail);
            return root;
        }
    };
    
    // 寻找链表中点这个真的是棒
    
     ListNode *mid=head;
     ListNode *temp=head;
     while(temp!=tail && temp->next!=tail){
             mid=mid->next;
             temp=temp->next->next;
      }
    

    386. Lexicographical Numbers 按字典进行排序

    这种解决问题的思考方式

    class Solution {
    public:
        vector<int> lexicalOrder(int n) {
            vector<int> res(n);
            int cur=1;
            for(int i=0;i<n;i++)    //进行循环遍历
            {
                res[i]=cur;
                if(cur*10<=n)
                    cur*=10;     // 进行倍数更新
                else
                {
                    if(cur>=n)
                        cur/=10;
                    cur+=1;      //保持自增
                    while(cur%10==0)
                        cur/=10;
                }
            }
            return res;
        }
    };
    
    不要用狭隘的眼光看待不了解的事物,自己没有涉及到的领域不要急于否定. 每天学习一点,努力过好平凡的生活.
  • 相关阅读:
    统计学习方法学习笔记第二章(感知机)
    filebeat句柄占用问题
    小组年终总结的汇总
    使用docker制作zookeeper镜像
    普罗米修斯在k8s上面的部署
    k8s亲和性和反亲和性的理解
    AlertManager 的在k8s集群上面的安装部署使用
    filebeat生产上面镜像制作的流程
    普罗米修斯生产上面的性能优化点
    AlertManger集群的搭建
  • 原文地址:https://www.cnblogs.com/GeekDanny/p/10092336.html
Copyright © 2011-2022 走看看