• 那些让你觉得自己是个傻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;
        }
    };
    
    不要用狭隘的眼光看待不了解的事物,自己没有涉及到的领域不要急于否定. 每天学习一点,努力过好平凡的生活.
  • 相关阅读:
    js检验文件格式
    java判空工具类
    $(document).ready() 是个什么函数?为什么要用它?
    Maven 手动添加jar
    java深克隆
    cors跨域详解
    常见异常类总结
    Spring事务回滚机制
    Java获取13位毫秒级时间戳
    JSON 字符串转换为 Map
  • 原文地址:https://www.cnblogs.com/GeekDanny/p/10092336.html
Copyright © 2020-2023  润新知