题目描述 找出字符串中第一个只出现一次的字符 如果无此字符 请输出'.' 输入描述: 输入一串字符,由小写字母组成 输出描述: 输出一个字符 输入例子: asdfasdfo 输出例子: o 思路:数组s记录出现的字母顺序.time数组记录出现的次数,每个char对应一个int型,,,所以,字母a出现的次数可以直接用time['a']表示. AC代码: #include "iostream" #include "string.h" #define MAX 201 us…
原创博文,转载请注明出处! # 题目 在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的.请找出数组中任意一个重复的数字,但不能修改输入的数组.例如,如果输入长度为8的数组{2,3,5,4,3,2,6,7},那么对应的输出是重复的数字2或者3. # 思路 借鉴二分查找的思想,将数字1~n拆分成1~m和m+1~n两部分,如果数字范围1~m中数字个数大于m,则重复数字在1~m中间,否则重复数字一定在数字范围m+1~n中.基于二分查找法不能找到全部的重复数字,例如…
题目: 给定一个长度为 n 的整数数组 nums,数组中所有的数字都在 0∼n−1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复的数字. 注意:如果某些数字不在 0∼n−1 的范围内,或数组中不包含重复数字,则返回 -1: 样例 给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]. 返回 2 或 3.   第一种方法:利用map,键为数组中的数字,值为该元素出现的次数.然后输出键值不为1的数 class Sol…
题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小.1<=n <= 10^6. 第二行有n个整数,表示数组元素,每个元素均为int. 第三行有1个整数m,表示接下来有m次查询.1<=m<=10^3. 下面有m行,每行有一个整数k,表示要查询的数. 输出: 对应每个测试案例,有m行输出,每行1整数,表示数组中该数字出现的次数. 样例输入: 8 1 2 3 3 3 3 4 5 1 3 样例输出: 4 [解题思路]本题很容…
题目描述 统计一个数字在排序数组中出现的次数. 一 . 题目分析 该题目并不是难题,但该题目考察目的是正确的选择合适的查找方法.题目中有一个关键词是:排序数组,也就是说,该数组已经排好了,我一开始直接遍历了一遍数组,有相同的就加1,代码量虽然很少,但这很显然是效率很低的方法.所以又重新码了二分查找法的代码. 根据题意,使用这种方法要考虑到两点: 1. 把二分查找法先构造出来. 2. 统计数字k在数组中出现次数. 二 . 代码实现 class Solution { public int GetNu…
思路 1. 经典解法是用环形链表模拟圆圈, 然后每次减少一个节点. 时间复杂度为 o(mn), 空间复杂度为 o(n) 2. 转化成数学问题, 递推公式决定下一个元素. 时间复杂度为 o(n), 空间复杂度为 o(1)…
[剑指Offer]字符流中第一个不重复的字符 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符"google"时,第一个只出现一次的字符是"l"…
剑指Offer--算法复杂度中的O(logN)底数是多少 前言 无论是计算机算法概论.还是数据结构书中,关于算法的时间复杂度很多都用包含O(logN)这样的描述,但是却没有明确说logN的底数究竟是多少.算法中log级别的时间复杂度都是由于使用了分治思想,这个底数直接由分治的复杂度决定.如果采用二分法,那么就会以2为底数,三分法就会以3为底数,其他亦然. 不过无论底数是什么,log级别的渐进意义是一样的.也就是说该算法的时间复杂度的增长与处理数据多少的增长的关系是一样的. 我们先考虑O(logx…
[剑指Offer]删除链表中重复的结点 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 解题方法 要删除有序链表中所有的重复节点,而头结点有可能就是重复节点.这…
剑指 Offer 57. 和为s的两个数字 Offer_57 题目详情 使用二分法 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2021/2/10 18:57 */ /** * 题目详情:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s. * 如果有多对数字的和等于s,则输出任意一对即可. */ import java.util.ArrayList; import java.util…