LeetCode 笔记

 

注:以下内容参考了别人的博客,仅供自己学习。

1. 数据结构与算法

1.1 线性数据结构

1.1.1 数组、单链表和双链表

1.1.1.1 数组

  • 数组的数据在内存中是连续存储的,随机访问速度快。
  • 多维数组
  • 动态数组:数据的容量可以动态增长的数组,特别地在c++中,STL标准模板库已经提供了实现vecor<type>

1.1.1.2 单向链表

  • 链表的一种,由若干个节点组成,每个节点都包含指向下一个节点的指针,表头为空,表头的后继节点才是链表元素。
  • 链表的每个节点包括两个部分,一部分为表元素域,存放具体的数据,另一部分为链接域,用来存放后继节点的地址。

额自己的画的不够具体,参考下大佬的

  • 头指针
    • 指向第一个节点地址的指针变量
    • 具有标识单链表的作用,一般常用头指针代表单链表的名字。
  • 头节点
    • 在单链表的第一个节点之前附设的一个节点,没有直接前驱
    • 可以不存信息,或存放线性表的长度等附加信息
    • 指针域存放首节点的地址
    • 附设头结点的具体解释
      • a
      • n

c++中的头文件 .h 和源文件 .cpp

  • c++中的头文件可以存放函数的声明,当一个.cpp文件需要调用这些函数时就可以通过宏命令#include包含进这个.cpp文件中。举例
    // math.cpp
    int F1()
    {
        // do something here ......
        return ;
    }
    int F2()
    {
        // do something here ......
        return ;
    }
    
    // math.h
    int F1();
    
    int F2();
    
    // main.cpp
    #include "math.h"
    int main()
    {
        int num1 = F1();
        int num2 = F2();
    }
    

栈 Stack

队列 Queue

树形数据结构

二叉查找树

AVL树

伸展树

红黑树

堆形结构

图形数据结构

排序算法

冒泡排序

快速排序

直接插入排序

希尔排序

选择排序

堆排序

归并排序

堆排序

桶排序

基数排序

LeetCode 笔记

简单类型上手

LeetCode 7

==题目:整数的翻转问题 (32位有符号整数)==

class Solution {
public:
    int reverse(int x)
    {
        int reverse_x = 0;
        int tmp;
        while (x != 0)
        {
            tmp = x % 10;
            // 翻转后的结果可能会超过int整型的范围
            // INT_MAX = 2147483647
            // INT_MAX = -2147483648

            if ((reverse_x > 214748364) || (reverse_x < -214748364))
            {
                return 0;
            }
            else
            {
                reverse_x = reverse_x * 10 + tmp;
                x = x / 10;
            }

        }

        // return reverse_x * scale;
        return reverse_x;
    }

};