数据结构与算法
Deecyn
Talk is cheap, show me the code.
展开
-
解析递归的本质:栈(多图预警!)
关于递归和栈。递归调用的本质就是栈的先进后出,递归可分为三个阶段:前进段:依次执行递归语句之前的代码,保存当前函数的现场(参数、局部变量等),并压入栈中。临界值:终止递归的前进段,通过 return 语句开始进入返回段。返回段:对于栈顶的函数,基于在前进段保存的函数的现场,依次执行递归语句之后的代码,执行完后出栈(执行 return 语句即出栈)。实战解析:两两交换链表中的结点仿照...原创 2020-04-10 12:53:20 · 2017 阅读 · 1 评论 -
如何找到大于或等于一个整数的最小的 2 的幂?
在 Java 中,如何找到大于或等于一个整数的最小的 2 的幂呢?二、利用补码的「移位」和「按位或」操作1.操作原理首先,对于任意一个整数,若它为 2 的幂,则会有一个特点:它的二进制数(补码)只有一位最高位是 1,其它位全是 0 。根据这个特点可以找到思路:对于当前数的补码,先把最高位及以下的所有低位「变」成 1,然后再加 1 。例如,找到大于或等于 25 的最小的 2 的幂(这里只写 ...原创 2020-03-30 16:04:53 · 2612 阅读 · 2 评论 -
数组
一、认识数组数组是一种线性表数据结构。它用一块连续的内存空间,来存储相同类型的一组数据。1. 概念的理解线性表:顾名思义,线性表就是数据排列成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向,数组,链表,栈,队列等都是典型的线性表结构。与其相对立的,在非线性表中,数据之间并不是简单的前后关系,像树,堆,图等都是典型的非线性表。连续的内存空间和相同类型的数据:即计算机...原创 2019-09-01 14:21:43 · 914 阅读 · 0 评论