2019.1.3
2020.8.19
Java
4026
9 分钟
String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性 简单的来说:String 类中使用 final 关键字字符数组保存字符串,private final char value[],所以 String 对象是不可变……
2019.1.3
2020.8.19
Java
3687
8 分钟
1. 简述线程,程序、进程的基本概念。以及他们之间关系是什么? 线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此……
题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 算法分析 使用递归的方法: 我们可以使用递归函数,head和head->next存在的时候进入下一层,当进入最后一层的时候开始从尾部返回。 使用栈的方法: 首先遍历一遍链表,将顺序的值压栈,然后利用栈的性质(后进先出)进行打印。 代……
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 算法分析 我们可以观察二维数组(m,n)中的4个顶点。 左上角(0,0),向右和向下都是递增。右下角(m,n),向左和向上都是递增……
题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 算法分析 首先复制一份字符串的备份,我们需要知道字符串原始长度,空格数来计算替换后字符串的长度,之后就只需要根据字符串原始长度和新长度对字符串进行拷……
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 算法分析 我觉得这道题……
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 算法分析 队列具有先进先出的性质,栈具有后进先出的性质,根据他们性质的联系,使用两个栈实现队列的思路如下: push操作用一个栈进行存储,pop操作用存储数据的栈向另一栈进行存放,这样数据两次倒转不变, 第二个栈的栈……
问题描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 算法分析 算法的基本思路是分治法,divide and conqu……
2018.11.27
2020.8.19
Java
1448
3 分钟
C语言函数调用实现 通过一个简单的C语言程序分析 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> int add(); int main(int argc, char const *argv[]) { int c = add(); printf("%d", c); return 0; } int add() { int z = 1 + 2; return z; } 将这段C程序编译成汇编程序: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 .file ".\\sampleAdd.c" .section .rodata .LC0: .string "%d" .text .globl main .type main, @function……
简介 平衡树(AVLTree) 在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G. M. Ad……