UC算法笔试题

[QQ群:
189191838,对算法和C++感兴趣可以进来]

说实话,昨天UC的笔试题基本全是基础,但是太基础,直接导致很多都不能确定了。看来不管找工作还是找实习,一定要复习到位。好在我也一直是抱着打酱油的味道,实习与否不是特别在意,否则真心要鄙视死自己啦。

好的,言归正传,题目是一道经典的题目:在一个字符串中找到第一个只出现一次的字符。要求

1、必须用C/C++编写代码。

2、不能使用嵌套的for/while循环。

看到这道题时,我坑爹的看成不能使用for/while循环了。我当时想的是,要遍历字符串不能使用for/while,除非递归和使用goto语句,否则这几乎是不可能的(如果可以,请点明)。觉得题目应该不会这么变态吧,迟迟不愿动笔,后来知道人家说的是嵌套好不好。好的,思路出来了(后来才知道网上一堆这样的题目)。

1、暴力求解,复杂度为O(n*n).必然会使用到双循环。否决!

2、排序解决,可以。复杂度也降低,各种排序算法见本博博文。各种内部排序算法

3、哈希表的方式,不知道为什么,我对哈希表的方式情有独钟,很多算法我的第一反应都是哈希。O(∩_∩)O哈哈~。昨天的算法代码如下:

4、当然,还有第四种解决方式,用二进制的方式,用两个位表示一个字符,扫描。感觉和哈希表的方式差不多。


 1 int HT[256]={0};
2 char getChar(char* str){
3 assert(str!=NULL);
4 for (int i=0;i<strlen(str);i++)
5 HT[(int)str[i]]++;
6 for(int i=0;i<strlen(str);i++){
7 if (HT[(int)str[i]]==1)
8 return str[i];
9 }
10 return NULL;
11 }

看到博文的各路大仙,除了以上四种方式,还有其他什么求解方式,求指点。

参考文献:真心无

版权所有,欢迎转载,但是转载请注明出处:潇一

时间: 2024-08-28 21:53:15

UC算法笔试题的相关文章

算法笔试题

1.假定x=500,求下面函数的返回值__6_ . 1 2 3 4 5 6 7 8 9 10 int fun(int x) {     int countx = 0;     while (x)     {         countx++;         x = x & (x – 1);     }     return countx; } 解析:x&(x-1) 就是从右到左遇到的第一个1后面的(包括1)全都变成 0 ,更直观的:会导致x二进制中的1减少一个.本题答案:x二进制中有多少

算法笔试题2-Java

(1)翻转链表 链表节点定义: public class ListNode<T> { T val; ListNode next; } 翻转链表关键在于处理中间状态.中间状态是有一部分链表已翻转(用head表示),一部分链表未翻转(用next表示),将next指向的节点加入到head指向的节点,并且head移动到next的位置,next移动到next.next的位置,此时又回到中间状态.一直迭代直到next为null,此时链表全部已翻转,head指向的就是翻转链表的头. public ListN

华为算法笔试题

#include <vector> #include <iostream> using namespace std; int main() { int k; cin>>k; vector<vector<int> > arr; vector<int> a; int tmp; while(cin>>tmp){ int i=0; if(arr.size()<i+1) arr.push_back(a); arr[i].pus

[实用向] 算法笔试题中常用的一些函数

1.pow 幂运算(math.h) pow(2,n);//2^n 2.sqrt  开方运算 (math.h) sqrt(n) //开方 x*x = n,返回x https://support.office.com/zh-cn/article/SQRT-%E5%87%BD%E6%95%B0-654975c2-05c4-4831-9a24-2c65e4040fdf -----------------------------随时更新-------------------------------- 原文

算法--两道百度笔试题

算法--两道百度笔试题 今天看到一位园友写了一篇关于百度的面试题的博客,成了评论头条,再下看了一下,非常感兴趣,那位博主的算法能力跟我一样需要提高,估计他的功力还在我之下,所以再下不才,在这里把自己的源码贴出来. 百度面试题(一):假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数和正数间元素相对位置不变.时空复杂度要求分别为:o(n)和o(1).          其实开始的时候我也是一头雾水,在纸上画画之后发现,其实就是一道变形的插入排序.幸运的是

白话经典算法系列之九 从归并排序到数列的逆序数对(微软笔试题)

首先来看看原题 微软2010年笔试题 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序数对.一个排列中逆序的总数就称为这个排列的逆序数.如{2,4,3,1}中,2和1,4和3,4和1,3和1是逆序数对,因此整个数组的逆序数对个数为4,现在给定一数组,要求统计出该数组的逆序数对个数. 计算数列的逆序数对个数最简单的方便就最从前向后依次统计每个数字与它后面的数字是否能组成逆序数对.代码如下: #include <stdio.h> int main()

【美团点评】2020校招算法工程师方向笔试题

这套题难啊..好多坑点.而且想了好久.交卷两小时..想了一晚上. 第一题还是不知道怎么dp的..可能要坑一下明天补.. 如果有大佬能指点下我就更好了QAQ.我是真的菜.. 试题链接:2020校招算法工程师方向笔试题 5. 外卖小哥的保温箱 题意:众所周知,美团外卖的口号是:”美团外卖,送啥都快”.身着黄色工作服的骑手作为外卖业务中商家和客户的重要纽带,在工作中,以快速送餐突出业务能力:工作之余,他们会通过玩智力游戏消遣闲暇时光,以反应速度彰显智慧,每位骑手拿出装有货物的保温箱,参赛选手需在最短的

java各公司笔试题集1

IBM笔试题 注:IBM笔试题一小时之内完成,题目全部用英文描述,这里用中文表述 一.名词解释 1.Eclipse 2.J2EE 3.EJB 4.Ajax 5.Web service 二.找出以下代码问题 public class test{ public void print(String str){ char[] s=str: } } public class a{ public static void main(String [] args){ puts() } } 三.写出以下输出 pu

腾讯笔试题:满二叉排序树,任给3个子节点,找他们最大的公共父节点

腾讯笔试题出现了和这个类似的题目,没做出来,现在来好好解决这个问题吧,先从基本的开始. 先吐槽一下:感觉算法设计什么的,真的超级难,也许是我头脑太笨,转不过弯来吧,呵呵. 题目是这样的:一棵满二叉排序树,有K层,节点的值依次为 1~2k-1.现在告诉你树的高度是4层,给定你3个节点,比如9,11, 13,那么最大的公共父节点是12. 现在想起来这题我已经想出来一半了呀,但是大概人在紧张的时候大脑会思维短路,跳不出原有的思维陷阱.想法是这样的: 1. 首先是从根节点开始,如果给的三个叶节点的值其中