04 2021 档案
摘要:1.二分查找 二分查找必须对有序数组进行,每次先找到中间值进行比较,若大于当前值则向后继续按此方法找,若小于当前值则向前继续按此方法找。 二分查找的思路: 1.首先确定数组中间值: mid = (left + right) / 2; 2.然后比较中间值mid和要查找的值num大小; 2.1若num>
阅读全文
摘要:递归应用 1.使用递归解决迷宫问题 public class RecursionTest { public static void main(String[] args) { // 使用一个二位数组模拟迷宫 int[][] map = new int[8][7]; // 使用1表示障碍,不能走 fo
阅读全文
摘要:递归 1.概念: 递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得更加简洁; 2.递归调用机制的解析: 例: public class RecursionTest { public static void main(String[] args)
阅读全文
摘要:栈的应用 1.使用栈计算一个表达式的结果,如:7x2x5-3-6+5+9 (中缀表达式) 思路:创建两个栈,一个存储数据,一个存储用算符; ① 定义一个index索引,遍历表达式 ② 如果为数字进入数据栈; ③ 若为符号,判断如果当前符号栈为null则直接压入,若不为null,则比较优先级大小,如果
阅读全文
摘要:栈的应用 1.使用栈计算一个表达式的结果,如:7x2x5-3-6+5+9 (中缀表达式) 思路:创建两个栈,一个存储数据,一个存储用算符; ① 定义一个index索引,遍历表达式 ② 如果为数字进入数据栈; ③ 若为符号,判断如果当前符号栈为null则直接压入,若不为null,则比较优先级大小,如果
阅读全文
摘要:栈 1.定义: 栈(stack)是一种先进后出(FILO)的数据结构,只能从一端进行插入和删除的特殊线性表; 压栈:数据进入栈; 弹栈:数据出栈; 2 .实现栈的思路分析 1)使用数组模拟栈; 2)使用top模拟栈顶,初始化为-1; 3)入栈时,top++; stack[top] = d
阅读全文
摘要:约瑟夫问题 设编号1,2........n的那个人围坐一圈,约定编号k(1<=k<=n)的人从开始报数,数到m的那个出列,从它的下一位又开始从1开始报数,数到m的那个人又出列,以此类推,直到剩下一个人; 解决方法: 使用一个不带头节点的循环链表来处理,先构成一个有n个结点的循环链表,然后从k结点起1
阅读全文
摘要:双向链表 双向链表的增、删、改、遍历思路 1.增加: 在双向链表的末尾增加; 只需找到最后一个结点temp; temp.next = newNode; newNode.pre = temp; 2.指定的位置插入 假设插入到index位置, 有两种情况:①当temp.next.no > index是则
阅读全文
摘要:链表的面试题 获取链表中的有效元素个数 获取链表中倒数第k个元素 反转链表 反向遍历链表 合并两个有序链表 package com.sratct.linkListArray; import javax.lang.model.element.VariableElement; import java.u
阅读全文
摘要:稀疏数组 1.概念 当一个数组大部分元素为0,或者为同一值的数组时,可以使用稀疏数组表示; 稀疏数组处理方法: 1)记录数据有几行几列,有多少个不同的值; 2)把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模; 2.稀疏数组的举例 3.原始数据转化为稀疏数组 方法: 1)稀疏
阅读全文