题意描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 输出描述 如果当前字符流没有存在出现一次的字符,返回 字符。 解题思路 一、 ...
分类:
其他好文 时间:
2020-05-07 17:04:05
阅读次数:
73
题目: 解答: 利用题目中所给信息 1 ≤ a[i] ≤ n ,将出现过的数字作为数组的index(访问元素时需要减一),如果出现一次的,将该index下的数取相反数,记录此时的状态,如果值为index的数字再出现一次(此时index索引的值为负数),那么这个数字就出现了两次。 比如 数组 [2,2 ...
分类:
编程语言 时间:
2020-05-05 17:58:46
阅读次数:
53
题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(1)。 解题思路: 这道题目相对比较难,一般情况下,我们首先可以想到的是顺序扫描数组,但其时间复杂度为O(n^2)。进一步也可以想到用哈希表保存每一个数次 ...
分类:
编程语言 时间:
2020-05-05 00:47:23
阅读次数:
71
用单调栈来维护,并且维护两个数组,一个是某数现存的个数,一个是这个数是否已经在栈中 如果已在栈中,就不能操作,并且把个数--,因为如果这样操作,就会出现一个问题。 题目告诉我们每个数必须出现一次,举个例子 现在是 1 3 1 4 3 2,这样的序列 刚开始是1 3 ,如果我们操作1 ,因为3的数可以 ...
分类:
其他好文 时间:
2020-05-04 15:08:06
阅读次数:
99
虽然之前没做过数独,不知道这种题是咋出出来的,但的确每一步都能通过一定的推理确定,不含赌的成分(话说假设法不算赌吧quq)。 每一行每一列每一个九宫格内1-9只出现一次,从带有圆球一端开始每条曲线上的数字严格递增。 先给原图: 以下提供一种解题思路: 1.考虑字母M,因为(4,6)含有数字8,因此字 ...
分类:
其他好文 时间:
2020-05-03 14:21:46
阅读次数:
517
1.题目描述 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并 ...
分类:
编程语言 时间:
2020-05-03 00:42:07
阅读次数:
75
P2073 送花 因为c保证只会出现一次并且c小于等于106 我们可以以c为关键字,维护花费和优美度,构建一棵线段树 对于1操作,我们直接查询c节点是否有值,有就直接返回,反之赋值 对于2操作,删去最大值,就从完整区间开始,只要右子树有点或左子树无点,就尽可能的去遍历右儿子,否则才遍历左儿子,将最后 ...
分类:
其他好文 时间:
2020-05-02 22:58:42
阅读次数:
64
题目 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 示例 1: 示例 2: 限制: 1 & nums) { int res = 0; unordered_map ump; for (auto n : nums) { if (ump.count( ...
分类:
编程语言 时间:
2020-05-02 00:18:38
阅读次数:
64
地址 https://leetcode-cn.com/problems/single-number/ 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: ...
分类:
其他好文 时间:
2020-05-02 00:14:23
阅读次数:
58
题目: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 解答: (1)指定cur指针指向头部head; (2)当cur和cur->next的存在为循环结束条件 ...
分类:
编程语言 时间:
2020-05-01 18:39:24
阅读次数:
70