摘要:
题目链接:统计一个数字在排序数组中出现的次数。 解题思路: 由于数组有序,所以使用二分查找方法定位k的第一次出现位置和最后一次出现位置 这里有一个大坑:&&这个符号非常坑爹,&&的短路功能,当第一个表达式的值为false的时候,则不再计算第二个表达式;所以总是提示数组越界就是在这里!!!!。 阅读全文
摘要:
题目链接:输入两个链表,找出它们的第一个公共结点。 解题思路: 找出2个链表的长度,然后让长的先走两个链表的长度差,然后再一起走(因为2个链表用公共的尾部) 1 /* 2 public class ListNode { 3 int val; 4 ListNode next = null; 5 6 L 阅读全文
摘要:
题目链接: 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 示例1 解题思路: 阅读全文
摘要:
题目链接:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字 解题思路: 现在做题真是越来越有感觉了,当出现什么数组中找一次两次啊什么的,优先考虑HashMap。 如果没出现这个值,那么就传入<key,1>。 如果出现了,value++; 阅读全文
摘要:
题目链接:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 解题思路: 这道题考察的是HashMap,遍历一遍字符,如果这个字符在Map中,value++,否则传入<字符,1> 阅读全文
摘要:
题目链接:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快 阅读全文
摘要:
题目链接:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 解题思路: 左右夹逼 阅读全文
摘要:
题目链接:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 解题思路: 回溯法 阅读全文