12 2021 档案
摘要:当做到一些操作链表的算法题时,可能需要定义一个辅助结点,目的是不直接操作题目给出的链表,但是辅助结点如何初始化就是个问题了。 比如 剑指 Offer 25. 合并两个排序的链表 中,我们需要定义一个辅助结点,我一般是这样定义的: ListNode startNode = null; ListNode
阅读全文
摘要:本文用于总结字符串相关题目的所用方法。 1. 哈希表 主要作用:统计字母出现个数。 当题目中出现与字母个数相关的题目时,我们可以选择哈希表。经常会用到 HashMap 中的 put与get函数,注意当key相同的时候,HashMap是可以更新value的。 有时对两个字符串进行比较时,我们可能会定义
阅读全文
摘要:如果直接开始for循环,遇到一个0就清空对应的行和列,那么最终会导致矩阵多出很多0(原本不是0的位置,遍历到的时候也被计为0) 第一种方法 可以使用辅助矩阵:遍历矩阵的过程中,遇到一个0,就把它对应的行和列记入辅助矩阵(boolean类型)中,遍历结束后,根据辅助矩阵的值来对原矩阵进行改造。这种思路
阅读全文
摘要:《程序员面试金典》的第七题 主要就是涉及矩阵的知识点:矩阵旋转90度。 第一种解法:辅助矩阵法 最简单的一种解法,主要思想就是用辅助矩阵记录元素旋转后的位置,但这样做的话,空间复杂度就为O(N^2) 注意一下对应位置,matrix[j][n-1-i]是旋转后的位置,因此需要在辅助矩阵的这个位置,输入
阅读全文
摘要:求数组最大值的方法: public static int process(int[] arr,int L, int R){ //L为左边界,R为右边界 if(L==R){ //只有一个数,直接返回 return arr[L]; } int mid = L + ((R-L)>>1); //求中点 in
阅读全文
摘要:在一些题目中,需要用到异或。比如:在一个数组中,有出现偶数次的数,还有出现奇数次的数(简单点,就一个,如果多个还需要补码的知识),如果需要求出来奇数次出现的那个数,正确的解法就是声明一个数,让他循环异或数组里的数,最后的结果就是出现奇数次的数。 for(int i=0;i<arr.length;i+
阅读全文
摘要:1. 产生一个随机长度的数组,数组里都赋值成随机数。 public static int[] generateRandomArray(int maxSize,int maxValue){ int length = (int)((maxSize+1)*Math.random());//随机长度 int
阅读全文

浙公网安备 33010602011771号