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;
        }
    };
    
    不要用狭隘的眼光看待不了解的事物,自己没有涉及到的领域不要急于否定. 每天学习一点,努力过好平凡的生活.
  • 相关阅读:
    《数据结构与算法之美》01——系统高效地学习数据结构与算法
    Cookie:SameSite,防止CSRF攻击
    HeadFirst学习笔记-2.观察者(Observer)模式
    HeadFirst学习笔记-1. 设计模式入门
    Redis深入解析系列一:sql与nosql比较
    MySQL优化系列2-索引原理和优化
    MySQL优化系列1-MySQL体系结构
    java集合-ArrayList中EMPTY_ELEMENTDATA与DEFAULTCAPACITY_EMPTY_ELEMENTDATA的区别
    java集合ArrayList中modCount的作用
    java中的System.arraycopy
  • 原文地址:https://www.cnblogs.com/GeekDanny/p/10092336.html
Copyright © 2011-2022 走看看