题目描述: 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置. 分析: 用一个数组统计每个字符出现的次数. 再次扫描数组,如果找到第一个字符次数为1的,那么返回它的位置. 代码: class Solution { public: int FirstNotRepeatingChar(string str) { int strLen = str.length(); ]; memset(times, , )); ; i < strLen…
题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 牛客网链接 js代码 function FirstNotRepeatingChar(str) { // write code here let map = new Map() for (let i of str) { if (map.get(i) === undefined) map.set(i, 1) else map.set(i,…
思路:i表示字符的ASCII码值,cntp[i]表示字符出现的次数. AC代码 class Solution { public: int FirstNotRepeatingChar(string str) { int n = str.length(); if(n == 0) return -1; int cnt[500]; memset(cnt, 0, sizeof(cnt)); for(int i = 0; i < n; ++i) { cnt[str[i]]++; } int ans = 0;…
题目链接 https://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c?tpId=13&tqId=11187&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题意 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置,…
map默认对key进行排序,unordered_map不对键或值进行排序,但是也不是默认插入的顺序 -------------------------------------------------------------------------------------------------------------------------------------------------------- 时间限制:1秒 空间限制:32768K 热度指数:231606 本题知识点: 字符串 题目描述…
题目: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 分析: 遍历字符串,利用Hashmap将每一个字符出现的值存储起来,然后再遍历字符串,返回第一个字符值为1的索引即可. 程序: C++ class Solution { public: int FirstNotRepeatingChar(string str) { ; i < str.size(); ++i){ m[str[i]]…
/************************************************************************* > File Name: 33_FirstNotRepeatChar.c > Author: Juntaran > Mail: JuntaranMail@gmail.com > Created Time: 2016年09月02日 星期五 13时43分20秒 ***************************************…
class Solution { public: int FirstNotRepeatingChar(string str) { if(!str.size()) ; ]={}; ;i<str.size();i++) { num[str[i]]++; } ; ) i++; if(i==str.size()) ; else return i; } }; 字符char是一个长度为8的数据类型,总共有256种可能.因此创建一个长度为256的数组,每个字母根据其ASCII码值作为数组的下标对应数组的一个数…
该题目来源于牛客网<剑指offer>专题. 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写) Go语言实现: func firstUniqChar(s string) int { //假设都是大小写字母,定义一个数组 list := [52]int{} //算出每个字符出现的次数 for _, x := range s { list[x-'a']++ } //算出首次出现且次数为1的…
打算写 图解剑指 offer 66 题 的系列文章,不知道大家有没有兴趣…
题目:请实现一个函数用来找出字符流中第一个仅仅出现一次的字符. 举例说明 比如,当从字符流中仅仅读出前两个字符"go"时.第一个仅仅出现一次的字符是'g'.当从该字符流中读出前六个字符"google"时,第一个仅仅出现1次的字符是"l". 解题思路 字符仅仅能一个接着一个从字符流中读出来.能够定义一个数据容器来保存字符在字符流中的位置.当一个字符第一次从字符流中读出来时,把它在字符流中的位置保存到数据容器里.当这个字符再次从字符流中被读出来时.那…
题目: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 看题目脑子里就出现做法了: 遍历,用个HashMap来记录出现的次数,然后再遍历HashMap返回的EntrySet找出出现一次的数字搞定. 代码顺便上下吧: public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) { HashMap<Integer, Integer> map = new HashMap<…
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.   思路: 因为有2个数字只出现了一次,而其他的数字都是2次,可以通过异或运算,得到最后这2个只出现一次的数字的 异或结果值.这种值必然不为0. 然后找出这个数字二进制中,最低位为1的位数,必然那一位一个是0,一个是1. 通过这个条件将原数组分为2部分,分别异或,得到结果.   代码: class Solution { public: void FindNumsAppearOnce(vecto…
15.反转链表 输入一个链表,反转链表后,输出链表的所有元素. 解法一:(使用栈) /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ import java.util.Stack; public class Solution { public ListNode ReverseList(ListNode head) { Stack<ListNode>…
题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 分析: 数组中一共有偶数个数.两个数字只出现过一次. 相同数异或在一起等于0,那么将所有数异或最后结果就是只出现过一次的数异或在一起的结果. 那么我们找到结果中的某一位的bit位为1,将整个数组按照该位为0和1分成两组, 肯定可以分成两组,因为如果没有0组的话,那么数组就只可能有奇数个数:没有1组的话,那么结果不可能得到该位为1. 两组内分别进行异或,得到两个结果,这两个结果就是只出现过一次…
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 牛客网链接 思路 链接:https://www.nowcoder.com/questionTerminal/e02fdb54d7524710a7d664d082bb7811?f=discussion 来源:牛客网 首先:位运算中异或的性质:两个相同数字异或=0,一个数和0异或还是它本身. 当只有一个数出现一次时,我们把数组中所有的数,依次异或运算,最后剩下的就是落单的数,因为成对儿出现的都抵消…
从今年 3 月份开始准备找实习,到现在校招结束,申请的工作均为机器学习/数据挖掘算法相关职位,也拿到了几个 sp offer.经历这半年的洗礼,自己的综合能力和素质都得到了一个质的提升. 实话说对于未来去哪里,即将如何发展还没有清晰的规划.迷茫总是会有的,但这并不是停止脚步的理由.找工作是在漫长的职业生涯中时常出现的转折点,而学习和和积累是终生的任务.这里不打算对这一段时间的各项细节和收获展开太多讨论,后续将会专门进行整理. 本文主要是对<剑指 offer>这本面试经典进行一个小结,也是未来继…
剑指Offer学习 剑指Offer这本书已经学习完了,从中也学习到了不少的东西,现在做一个总的目录,供自已和大家一起参考,学如逆水行舟,不进则退.只有不断地学习才能跟上时候,跟得上技术的潮流! 所有代码下载[https://github.com/Wang-Jun-Chao/coding-interviews] 目录 第01-10题 [剑指Offer学习][面试题02:实现Singleton 模式——七种实现方式] [剑指Offer学习][面试题03:二维数组中的查找] [剑指Offer学习][面…
剑指Offer  第一题 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数.     本人简单的解题思路  就是通过二重循环,遍历.查找数组中是否有目标数字,思路是简单的,但是有个小坑 ,就是没有进行数组越界判断   少判断了  array = [ [ ] ] 这种情况,最终通过的代码为 public class Solution { publi…
所列题目与牛客网<剑指offer>专题相对应. 数组: 和为S的两个数字 和为S的连续正数序列 连续子数组的最大和 数字在排序数组中出现的次数 数组中只出现一次的数字 旋转数组的最小数字 数组中的逆序对 最小的K个数 数组中出现次数超过一半的数字 把数组排成最小的数 数组中重复的数字 滑动窗口的最大值 构建乘积数组 数据流中的中位数 二维数组中的查找 顺时针打印矩阵 扑克牌顺子 调整数组顺序使奇数位于偶数前面 链表: 链表中环的入口结点 删除链表中重复的结点 从尾到头打印链表 两个链表的第一个…
剑指Offer学习 剑指Offer这本书已经学习完了.从中也学习到了不少的东西,如今做一个总的文件夹.供自已和大家一起參考.学如逆水行舟.不进则退.仅仅有不断地学习才干跟上时候.跟得上技术的潮流! 全部代码下载[https://github.com/Wang-Jun-Chao/coding-interviews] 文件夹 第01-10题 [剑指Offer学习][面试题02:实现Singleton 模式--七种实现方式] [剑指Offer学习][面试题03:二维数组中的查找] [剑指Offer学习…
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 剑指offer书里的版本,没有要求相对位置不变,而是给出了函数指针版本,替换判断是奇数的函数,可以提供将满足X条件的数字挪到不满足X条件的数字前面. 快速排序的变形,和书上的不一样,我用了几乎非常接近快速排序的代码: class Solution { public: void reOrderArray(vector<int>…
https://blog.csdn.net/tinkle181129/article/details/79326023# 二叉树的镜像    链表中环的入口结点    删除链表中重复的结点    从尾到头打印链表    斐波那契数列    跳台阶    变态跳台阶    矩形覆盖    把字符串转换成整数    平衡二叉树    和为S的连续正数序列    左旋转字符串    数字在排序数组中出现的次数    数组中只出现一次的数字    翻转单词顺序列    二叉树的深度    和为S的两个数…
面试题31:连续字数组的最大和 public class Solution { public int FindGreatestSumOfSubArray(int[] array) { int len = array.length; if(len==0) return 0; int[] dp = new int[len]; dp[0] = array[0]; int res = dp[0]; for(int i=1;i<len;i++){ dp[i] = Math.max(array[i],dp[…
题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 思路 思路一: 使用整型数组对出现次数进行统计. 思路二: 使用BitSet对出现次数进行统计. 0,1,更多 代码实现 package String; import java.util.BitSet; /** * 第一个只出现一次的字符位置 * 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 */ pub…
数组 数组中重复的数字 二维数组中的查找 构建乘积数组 字符串 替换空格 字符流中第一个不重复的字符 表示数值的字符串 递归和循环 斐波那契数列 跳台阶 变态跳台阶 矩形覆盖 链表 从尾到头打印链表 删除链表中重复的结点 链表中环的入口结点 树 把二叉树打印成多行 按之字形顺序打印二叉树 对称的二叉树 二叉树的下一个结点 数据流中的中位数 二叉搜索树的第k个结点 重建二叉树 代码的完整性 数值的整数次方 调整数组顺序使奇数位于偶数前面 知识迁移能力 二叉树的深度 平衡二叉树 左旋转字符串 数字在…
整数中1出现的次数(从1到n整数中1出现的次数) 把数组排成最小的数 丑数 第一个只出现一次的字符位置 数组中的逆序 31.求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数. class Solution { public: int NumberOf1Between1…
1. 链表 1. 从尾到头打印链表 2. 链表中倒数第k个结点 3. 反转链表 4. 合并两个排序的链表 5. 复杂链表的复制 6. 复杂链表的复制 7. 两个链表的第一个公共结点 8. 链表中环的入口结点 9. 删除链表中重复的结点 2. 二叉树 10. 重建二叉树 11. 树的子结构 12. 二叉树的镜像 13. 从上往下打印二叉树 14. 二叉搜索树的后序遍历序列 15. 二叉树中和为某一值的路径 16. 二叉搜索树与双向链表 17. 二叉树的深度 18. 平衡二叉树 19. 二叉树的下一…
今日题目: 整数中1出现的次数 把数组排成最小的数 丑数 第一个只出现一次的字符位置 今天的题目相对比较难,特别是第1题和第3题很考验数学功底,下面我们一题一题来看看. 1.整数中1出现的次数 题目描述: 输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数.例如,输入12,1~12这些整数中包含1的数字有1,10,11,和12,1一共出现了5次. 思路:这道题分别有递归和迭代两种解法,第一次看见这个题目比较难想到,可参考:递归:http://blog.csdn.net/gatieme/…
二维数组中的查找 替换空格 从尾到头打印链表 重建二叉树 用两个栈实现队列 旋转数组的最小数字 斐波那契数列 跳台阶 变态跳台阶 矩形覆盖 二进制中1的个数 数值的整数次方 调整数组顺序使奇数位于偶数前面 链表中倒数第k个结点 反转链表 合并两个排序的链表 树的子结构 二叉树的镜像 顺时针打印矩阵 包含min函数的栈 栈的压入.弹出序列 从上往下打印二叉树 二叉搜索树的后序遍历序列 二叉树中和为某一值的路径 复杂链表的复制 二叉搜索树与双向链表 字符串的排列 数组中出现次数超过一半的数字 最小的…