OfferCall!
OfferCall!
全部文章
题解
Java(1)
刷题笔记(1)
归档
标签
去牛客网
登录
/
注册
OfferCall!的博客
保持专注,持续学习。
全部文章
/ 题解
(共52篇)
位运算,统计二进制位1出现的次数
因为除了出现一次的那个数,其他数都出现k次,那么这些出现k次的数,它对应的二进制位中,为1的bit位,也是出现k次的,那么就可以用一个大小为32的数组,记录数组中所有数在这32个bit位中,出现的1的次数,最终出现1次的数,它对应的为1的bit位中1出现的次数必定是对k取模余1的,那么这32个bit...
2021-03-31
0
731
逆波兰法求解
题目给出的算术表达式主要包括三部分:操作数、括号、运算符一般的算术表达式都是中缀表达式,不易于编程计算。所以我们可以利用逆波兰算法将算术表达式的中缀形式转为更易于计算的后缀形式。转换为后缀表达式的过程需要借助两个额外空间,栈S和数组列表L,其中栈用于存储左括号和运算符,数组列表用于存储后缀表达式。整...
2021-03-30
8
868
哈希表+排序
方法一:哈希表+数组排序 public String[][] topKstrings (String[] strings, int k) { // write code here if (strings == null || strings.length == 0)...
2021-03-30
0
839
双指针
使用快慢指针先找到链表的中间节点,如果链表的节点数量是奇数个,那就是正中间那个节点;如果链表的节点数量是偶数个,那么中间节点就是偏左的那个。中间节点找到以后,将中间节点右边的那部分链表和原链表断开,采用头插法将这部分链表逆置,然后再同时从左往右的遍历这两个部分的链表,进行节点的插入。时间复杂度为O(...
2021-03-30
0
560
双指针法
定义四个变量:leftMax表示arr[0..L-1]中的最大值L表示位于左侧的指针变量,初始值为1rightMax表示arr[L+1..N-1]中的最大值R表示位于右侧的指针变量,初始值为N-2 求解容器中水容量的每一步就是R向左或者L向右进行移动,其中具体的逻辑是:1、如果leftMax<...
2021-03-29
0
571
快慢指针
删除倒数第n个节点,就是删除正数第m-n+1个节点,所以可以定义一个快指针,让它先走n步,快指针距离链表尾部还有m-n步,然后慢指针开始移动,当快指针移动到最后一个节点的时候,慢指针走走到了第m-n个节点,然后直接删除即可 public ListNode removeNthFromEnd (...
2021-03-28
0
647
TreeMap解决
import java.util.Scanner; import java.util.TreeMap; public class HJ8 { public static void main(String[] args){ Scanner sc = new Scanner(...
2021-03-27
2
507
使用map解决
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); Strin...
2021-03-27
0
392
坑好多
总结一下可能的坑:1、字符串前后端可能有空格;2、空串3、字符串首个字符可能是正负号;4、字符串中间可能有‘0’ - ‘9’之外的非法字符,如果有的话,那么只将第一个出现的非法字符之前的数字串转换为数字;5、溢出,有正数溢出和负数溢出,所以要注意 public static int atoi...
2021-03-27
0
634
双指针
先定义一个头节点用于指示链表的头部位置,方便最后返回链表。然后定义两个指针p和q,初始化时,p先指向头结点,q指向head,开始遍历链表,因为链表是有序的,所以重复元素一定是连续出现的,所以我的策略就是先找出重复的一段子链表,然后一网打尽,具体做法就是: 如果q.next.val != q.v...
2021-03-27
11
1002
首页
上一页
1
2
3
4
5
6
下一页
末页