摘要:
链表反转 题目描述 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 思考分析(递归思想) 我们可以借助栈结果,把链表存入栈中的时候,再次拿出来的时候就是逆序的了。但是要注意其中关键一步,取出的时候要消除每个节点的next域的指向(正向存入栈中的每个节点的next域的指向是没 阅读全文
摘要:
二叉树求深度 题目描述 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如: 给定二叉树 [3,9,20,null,null,15,7], 来源:力扣(LeetCode) 链接:https://leetcode-cn 阅读全文
摘要:
把二叉树打印成多行 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 思考分析(类似二叉树的程序遍历) 参考:二叉树层序遍历 要把二叉树按照每行打印出来,我们可以借助一个队列来处理,一开始把root节点放入到对列中,每次处理,把队列中的元素取出,放入到一个行中(list), 阅读全文
摘要:
11、求1+2+3+....n 题目描述 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 方法1:条件表达式 public class Solution { public int Sum_Solution 阅读全文
摘要:
8、[位运算技巧系列]不用加减乘除做加法 ^(异或) 知识点:(同为0,异为1) 0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0 其他 如何左移 左移操作就是最高位抛弃 后的每一位向左前进一位, 最后一位补0 如: 101 左移1位:101-->>先补全四位0101 >>抛弃最高位0,且后边补一位 阅读全文
摘要:
12、数值的整数次方 题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 我的思考 1、如果次方是正树,即直接循环累乘即可; 2、如果次方是0的话,任何数的0次方都是1; 3、如果次方是小 阅读全文
摘要:
7、构建乘积数组[♥♥♥♥] 题目: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]A[1]...*A[i-1]A[i+1]...*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * ... * A 阅读全文
摘要:
6、变态跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法 当然,你会发现一个规律: f[0] = f[1] = 1 f[2] = 2 = 21 f[3] = 4 = 22 f[4] = 8 = 23 ... **f[n] = 2** 阅读全文
摘要:
5、剑指 Offer 10- II. 青蛙跳台阶问题 动态规划 详细题解:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/solution/mian-shi-ti-10-ii-qing-wa-tiao-tai-jie 阅读全文
摘要:
剑指 Offer 50. 第一个只出现一次的字符 题目要求 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 我的思考 使用无序的哈希表(HashMap)和有序的哈希表(LinkedHashMap)都能解决此问题,但是,我们还是使用无序的哈希表会更 阅读全文
摘要:
4、二维数组中的查找 带行列中止验证的比较(自写) class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { for (int i = 0; i < matrix.length; i++) { 阅读全文
摘要:
9、二叉树镜像 操作给定的二叉树,将其变换为源二叉树的镜像。 其他方法 方法1:递归代码 /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int 阅读全文
摘要:
10、补充基础:栈与队列模型 (1)Queue PriorityQueue PriorityQueue是Queue队列实现类,PriorityQueue保存队列元素的顺序不是按照加入队列的顺序,而是按照队列元素的大小进行重新排序。当调用peek()或者poll()方法获取队列元素时,获取的是队列最小 阅读全文
摘要:
3、数组中重复的数字 方法1:简单排序排序思想比较 //方法1:确定临时最小值,后续匹配(类似简单选择排序思想) public int findRepeatNumber(int[] nums) { for (int i = 0; i < nums.length; i++) { int temp = 阅读全文
摘要:
1、用两个栈实现队列 1.1、[牛客]用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 package jianzhioffer; import java.util.Stack; /** * @author jiyongjia * @create 2020/6/1 阅读全文
摘要:
2、斐波那契数列 方法1: 使用迭代for循环,效率高 /** * 时间上可以不超时 * int f[]={0,1,1,2,3,5,8,13,21,34...] */ public static int fib2(int n) { if (n==0 || n==1){ return n; } els 阅读全文
摘要:
左旋转字符串(Java)-循环Index方式 题目要求 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“ 阅读全文
摘要:
> 题目要求 链接:https://www.nowcoder.com/questionTerminal/00de97733b8e4f97a3fb5c680ee10720?answerType=1&f=discussion来源:牛客网请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符 阅读全文