zoukankan      html  css  js  c++  java
  • LeetCode记录

    日志

    【2021-3-2】

    9. 回文数

    • 判断对错
    • 考虑临界情况。
    • 考虑奇偶情况。

    13. 罗马数字转整数

    • 按规则转换输入
    • 关联容器map
    • 从特殊情况入手,分类讨论。

    剑指 Offer 03. 数组中重复的数字

    • 关联容器
    • 有空间复杂度为O(1)的做法

    【2021-3-3】

    剑指 Offer 04. 二维数组中的查找

    • 缩小搜索范围
    • size()函数返回的size_type是无符号整数
    • 临界情况:m,n=0

    【2021-3-9】

    剑指 Offer 06. 从尾到头打印链表

    我的做法是遍历链表一次,将数据从头到尾存入数组;然后将数组翻转。

    class Solution {
    public:
        vector<int> reversePrint(ListNode* head) {
            vector<int> data;
            while(head != NULL){
                data.push_back(head -> val);
                head = head -> next;
            }
            int tmp;
            for(auto x =0; x != data.size() / 2; ++x){
                tmp = data[x];
                data[x] = data[data.size() - 1 - x];
                data[data.size() - 1 - x] = tmp;
            }
            return data;
        }
    };
    
    • 遍历链表的基本写法。循环到当前指针为NULL.
    • 翻转数组的基本写法。无论奇偶,循环到数组长度length/2的位置,交换前后的数据。
      其他解法:
      容易想到基于栈来实现,而递归在本质上就是一个栈结构,所以有可以用递归来实现。用栈更稳定。
    class Solution {
    public:
        vector<int> reversePrint(ListNode* head) {
            if(head == NULL){
                return {};
            }
    
            vector<int> data = reversePrint(head->next);
            data.push_back(head->val);
            return data;
        }
    };
    

    总结

    时间/空间复杂度

    • 看程序中的循环
    • 循环实际执行次数与n的关系
  • 相关阅读:
    Processing编程【2】
    哈工大锐捷网络处理问题
    processing编程【1】
    verilog入门知识【2】
    数字电路与逻辑设计知识清单【一】
    四位密码锁*电子密码锁的设计
    verilog入门知识【1】
    【Android】入门的一些知识。
    Andriod 入门
    关于Hibernate和Strtus2的xml提示问题
  • 原文地址:https://www.cnblogs.com/tofengz/p/14468070.html
Copyright © 2011-2022 走看看