![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java算法题目
Leowner
以德报怨,何以报德?。。
展开
-
Leetcode 146 LRU Cache模板
数据结构题,思路简单,主要在编码上容易思路理不清。 import java.util.HashMap; import java.util.List; class ListItem { int key; int value; ListItem pre; ListItem next; } class LRUCache { HashMap<Integer, ListItem> keyToItem = new HashMap<Integer, Lis原创 2021-08-22 00:16:59 · 128 阅读 · 0 评论 -
leetcode48 旋转图像
题目难度很低,但实现需要细心,需要特别注意x y i j 的关系 class Solution { public void rotate(int[][] matrix) { int n = matrix.length; int half = (n-1) / 2; if (n % 2 == 0) { for (int i = 0; i <= half; i++) { for (int j =原创 2021-03-13 21:43:06 · 123 阅读 · 0 评论 -
二叉树三种遍历的迭代写法总结
二叉树前序遍历的思路 栈S; p= root; while(p || S不空){ while(p){ 访问p节点; p的右子树入S; p = p的左子树; } p = S栈顶弹出; } 前序遍历Leetcode地址: https://leetcode-cn.com/problems/binary-tree-preorder-traversal/ 参考代码: class Solution { public List<Int原创 2021-03-13 20:33:06 · 197 阅读 · 0 评论 -
leetcode 378 手写堆和堆的应用 附测试代码
非最佳方案,仅用于测试手撕堆的代码 class Heap{ // big first heap; public int[] data = new int[100000]; public int total = 0; public void insert(int x) { total++; data[total] = x; int cur = total; while (cur > 1) {原创 2021-03-13 16:37:57 · 151 阅读 · 0 评论 -
从一种rand生成另一种rand leetcode470
已知一种rand,如rand10,可以等概率的随机生成[1, 10]中的任意一个整数。先给出一种或两种rand,要求以其为基础,生成一种新的rand。 情况1:从小的rand生成大的rand: 已知 rand_N() 可以等概率的生成[1, N]范围的随机数 那么: (rand_X() - 1) × Y + rand_Y() ==> 可以等概率的生成[1, X * Y]范围的随机数 即实现了 rand_XY() 情况2:从大的rand生成小的rand: 例如,从rand49生成rand10,首先需原创 2021-03-13 11:38:55 · 119 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
本题使用Java做解毫无意义。 个人觉得最理想的情况是,预先算出字符数组的长度,从后往前将数组的元素向后复制并替换,这样可以以最小的空间代价完成任务,时间复杂度也维持不变。 class Solution { // 无意义代码 public String replaceSpace(String s) { return s.replace(" ", "%20"); } } ...原创 2021-03-01 23:31:28 · 43 阅读 · 0 评论 -
剑指offer 04 leetcode 240 二维数组中的查找
首先一个坑,n和m的最小值是0,要特别判定。 题目保证了往右和往下一定变大,右上和左下不保证,那么可以得出一种结论,如果当前一个数大于target,它的右下块一定无效,同理,小于,则左上块无效。 解题时,可以取左上角点或右下角点,每次比较时去除无效的一行或一列,那么最多n+m次对比即可 class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { if ( matrix == nu原创 2021-03-01 23:23:44 · 56 阅读 · 0 评论 -
leetcode 704 暨 二分查找左闭右闭模板
每次的查找区间是[left, right] while循环中采用小于等于的原因为,当查找区间为[left,left]时,区间内仍有一个数字待搜索。 下面更新时采用mid - 1和mid + 1的原因是,每次的搜索为闭区间搜索,搜索时mid已经被搜索过,下一次搜索不再包含mid 模板语言为java,可在leetcode 704提交 class Solution { public int search(int[] nums, int target) { int left = 0, r原创 2021-03-01 21:30:39 · 90 阅读 · 0 评论 -
CSP 考试Java快速读入模板
参考https://blog.csdn.net/qq_31390999/article/details/108315742 class Reader { static StringTokenizer token =new StringTokenizer(""); static BufferedReader reader =new BufferedReader (new InputStreamReader(System.in)) ; static String nextLine()转载 2020-09-07 10:45:15 · 281 阅读 · 0 评论 -
CSP考试中的Eclipse常用配置
Window -> Preferences -> General -> Editors -> Text Editors -> Colors and fonts 修改字体格式和字体大小 Content Assit 中,勾选Disable insertion triggers except Enter 来保证只有使用回车键才会使用自动补全。在下面的Auto activation triggers for Java中加入所有小写字母,保证在输入小写字母时激活自动补全 ...原创 2020-09-06 16:25:59 · 194 阅读 · 0 评论