lintcode-微软笔试

LintCode 介绍 第一次在优快云上发布文章 作为一名代码小白,有幸来到优快云进行学习,同时也是很幸运地被介绍了LintCode并且在其中练习各类算法题目,我将在优快云中分享在LintCode中的经历,希望有大佬多带带我! LintCode网站概括 LintCode是一个集合了大量算法面试题和AI面试题的网站,它为全世界的码农提供了练习自我技能的良好平台,注册是免费的,并且会在注册或关注公众号绑定微信后赠送用户7天VIP【开放全部试题,还可以查看他人代码】。 试题概况 在LintCode中,新人VIP可以查看的题目包括1 阅读详情
646. 第一个独特字符位置
题目:
给出一个字符串。找到字符串中第一个不重复的字符然后返回它的下标。如果不存在这样的字符,返回 -1。
样例:

给出字符串 s = "lintcode",返回 0。
给出字符串 s = "lovelintcode",返回 2。

思路:简单的hash应用。遍历一次,纪录每个字符出现的次数,再遍历一次,次数大于1的字符就是答案。

题目链接:http://www.lintcode.com/zh-cn/problem/first-position-unique-character/
代码:
class Solution {
public:
    /*
     * @param s: a string
     * @return: it's index
     */
    int firstUniqChar(string &s) {
        // write your code here
        int len = s.length();
		map <char,int> mp;
        for(int i = 0;i < len; i ++){
        	mp[s[i]] ++; 
        }
        for(int i = 0;i < len ; i ++){
        	if(mp[s[i]] == 1)
        		return i;
        }
        return -1;
    }
};

702. 连接两个字符串中的不同字符 

题目:
给出两个字符串, 你需要修改第一个字符串,将所有与第二个字符串中相同的字符删除, 并且第二个字符串中不同的字符与第一个字符串的不同字符连接。
样例

给出 s1 = aacdb, s2 = gafd
返回 cbgf
给出 s1 = abcs, s2 = cxzca;
返回 bsxz

思路:
遍历字符串s1,把每个出现过的字符标记为1,然后遍历字符串s2中每个字符,如果字符在s1中出现过,标记为-1,其他字符标记为1。最后把标记为1的字符组合成新字符串,即为答案。

题目链接:http://www.lintcode.com/zh-cn/problem/concatenated-string-with-uncommon-characters-of-two-strings/

代码:
class Solution {
public:
    /*
     * @param : the 1st string
     * @param : the 2nd string
     * @return: uncommon characters of given strings
     */
    string concatenetedString(string &s1, string &s2) {
        // write your code here
    	map <char,int> mp;
    	string ans = "";
    	int len1 = s1.length();
    	int len2 = s2.length();
    	if(len2 == 0)
    		return s1;
    	for(int i = 0;i < len1; i ++){
    		if(mp[s1[i]] != 1)
	    		mp[s1[i]] ++;
    	}
    	for(int i = 0;i < len2 ;i ++){
    		if(mp[s2[i]] == 1)
    			mp[s2[i]] = -1;
    	}
    	for(int i = 0;i < len2 ;i ++){
    		if(mp[s2[i]] == -1)
    			continue;
    		if(mp[s2[i]] != 1)
	    		mp[s2[i]] ++;
    	}

    	for(int i = 0;i < len1; i ++){
    		if(mp[s1[i]] == 1){
    			ans = ans + s1[i];
    		}
    	}
    	for(int i = 0;i < len2 ;i ++){
    		if(mp[s2[i]] == 1){
    			ans = ans + s2[i];
    		}
    	}
    	return ans;
    }
};

728. 3个不同的因子

题目:
给一 正整数 n (1 <= n <= 10^18). 判断这个数是否正好只有 3 个不同的因子, 如果正好有 3 个不同的因子就返回 true, 否则返回 false
样例

给出 n = 9, 返回 true 数字 9 正好有 3 个因子: 1, 3, 9, 所以返回 true.
给出 n = 10, 返回 false

思路:
数字 n 只有三个因子,说明除了1和 n 本身,只能有一个因子 x ,且 x 是这个数字的开方。x 除了1和本身不能再有别的因子,因此 x 是质数。首先遍历比1大比 x 小的整数,如果这个整数能整除 n ,即是 n 的因子,返回false。如果找到 x ,判断 x 是否是质数,如果是,返回true ,否则返回false。

题目链接:http://www.lintcode.com/zh-cn/problem/three-distinct-factors/

代码:
class Solution {
public:
    /*
     * @param : the given number
     * @return:  return true if it has exactly three distinct factors, otherwise false
     */
    bool isThreeDisctFactors(long long n) {
        // write your code here
        if(n < 4)
        	return false;
        if(n == 4)
        	return true;
        for(long long i = 3;i * i <= n ;i += 2){
        	if(n % i == 0 && i * i < n){
        		return false;
        	}
        	if(i * i == n){
	        	for(long long j = 2;j*j <= i;j ++){
	        		if(i % j == 0)
	        			return false;
	        	}
	        	return true;
	    	}
        }
        return false;
    }
};


534. 打劫房屋 II
题目:

在上次打劫完一条街道之后,窃贼又发现了一个新的可以打劫的地方,但这次所有的房子围成了一个圈,这就意味着第一间房子和最后一间房子是挨着的。每个房子都存放着特定金额的钱。你面临的唯一约束条件是:相邻的房子装着相互联系的防盗系统,且 当相邻的两个房子同一天被打劫时,该系统会自动报警。

给定一个非负整数列表,表示每个房子中存放的钱, 算一算,如果今晚去打劫,你最多可以得到多少钱 在不触动报警装置的情况下。

样例

给出nums = [3,6,4], 返回 6, 你不能打劫3和4所在的房间,因为它们围成一个圈,是相邻的。

思路:
动态规划。dp[ i ]表示前 i 个房子能打劫到的最多钱数。动态转移方程:dp1[i] = max(dp1[i-2] + nums[i],dp1[i-1]);(取前一个打劫 和 前一个不打劫的最大钱数)。因为这里是环形,首尾只能打劫一次,设两个状态转移方程,一个是打劫过第一间房屋的,一个是不打劫第一间房屋的,最后取最大值。 

题目链接:http://www.lintcode.com/zh-cn/problem/house-robber-ii/

代码:
class Solution {
public:
    /*
     * @param nums: An array of non-negative integers.
     * @return: The maximum amount of money you can rob tonight
     */
    int houseRobber2(vector<int> nums) {
        // write your code here
        int len = nums.size();
        int dp1[len + 2];
        int dp2[len + 2];
        if(len == 0)
        	return 0;
        if(len == 1)
        	return nums[0];
        dp1[0] = nums[0];
        dp1[1] = max(nums[0],nums[1]);
        dp2[0] = 0;
        dp2[1] = nums[1];
        int ans = dp1[1];
        for(int i = 2; i < len;i ++){
        	dp1[i] = max(dp1[i-2] + nums[i],dp1[i-1]);
        	dp2[i] = max(dp2[i-2] + nums[i],dp2[i-1]);
        	// printf("%d %d\n",dp1[i],dp2[i] );
        	if(i == len - 1){
       			ans = max(ans,dp1[i-1]);
       			ans = max(ans,dp2[i]);
       		}
        }
        return ans;
    }
};




Lintcode算法训练与面试准备指南 Lintcode是一个在线编程和算法训练平台,它旨在帮助开发者通过解决实际问题来提升编程技能。在这一章节中,我们将介绍Lintcode的基本概念、平台特色以及它如何为算法训练和面试准备提供支持。Lintcode致力于成为程序员技能提升的良师益友,它提供了一个编程题目库,覆盖了从初级到高级的不同难度等级,供用户通过解决实际问题来锻炼编程能力。平台不仅包括算法和数据结构的练习,还涉及前端、后端、数据库和网络等方面的知识点。Java 8引入了Lambda表达式作为对函数式编程概念的初步尝试。 阅读详情

相关推荐

lintcode全部题解

lintcode全部可以通过的题解答案,对于正在做lintcode的人帮助会很大,请好评

LintCode题集——C/C++版本

入门: LintCode 题目:大小写转换 LintCode 题目:反转一个3位整数 LintCode 题目:交换数组两个元素 LintCode 题目:三数之中的最大值 LintCode 题目:链表节点计数 LintCode 题目:整数排序 LintCode 题目:字符串查找 LintCode 题目:斐波纳契数列 简单: LintCode 题目:LintCode的使用以及...

分享包括但不限于计算机基础知识、数据结构与算法、Golang技术栈。年与时驰,意与日去,遂成枯落,多不接世,悲守穷庐,将复何及! 4170

ansys workbench 静力结构分析 高阶教程

ansys workbench 静力结构分析 高阶教程 目录ansys workbench 静力结构分析 高阶教程新建工程模型导入设置材料模型简化: 主要内容: 材料设置、模型简化、网格细化、约束分析、接触设置、求解设置、报错处理、结果分析 基础教程: ansys workbench 静力结构分析 基础操作流程(入门) ansys版本: 19.0(16.0及以上均可) 参考资料: 推荐教学视频《有限元分析 张晔》(超详细 ???? )、ansys workbench 超级学习手册(查阅用) 说明:一些基

weixin_43434624的博客 5万+

为什么你的3D打印螺纹总是失败?5个角度+自适应公差系统解决FDM螺纹设计难题

当你在Fusion 360中设计3D打印零件时,是否经历过这样的挫败:精心设计的螺纹打印出来后要么卡死无法装配,要么松动得毫无连接力?传统的60°V形螺纹在FDM打印工艺面前显得力不从心,因为它们的几何形状和公差体系是为机械加工而非逐层堆积的3D打印设计的。这正是Fusion-360-FDM-threads项目诞生的背景——一个专门为FDM 3D打印优化的梯形螺纹配置文件生成器,能够将螺纹打印成功

gitblog_00040的博客 846

Python语言在工业控制中的简单应用

在工业控制中,经常需要对采集到的数据进行分析和处理,Python的这些库可以简化这一过程。传统的工业控制系统多依赖于专用的控制硬件和软件,但随着技术的发展,开放性和灵活性成为了新的需求焦点。还有,Python社区活跃,提供了大量的开源代码和模块,这对于工业控制领域来说是一个巨大的资产。Python作为一种高级编程语言,因其简洁的语法、强大的库支持和广泛的社区资源而在工业界获得了快速的发展和广泛的应用。在工业控制领域,Python的应用日益增多,这得益于其跨平台性、脚本语言的灵活性以及与硬件设备交互的能力。

2303_78014702的博客 1720

txt经纬度批量转面要素(附自定义ArcGIS工具箱方法)

当涉及大量txt坐标文件需要转换成面要素的时候,逐步操作工作量较大。本文由需求出发,以ArcGIS10.2为例,采用python脚本自定义ArcGIS工具,实现批量操作的目的。

m0_59216200的博客 1818

【DP专题】LintCode刷题笔记

669、换硬币 LintCode原题链接:669 · 换硬币 题目分析 设f[i]为需要多少硬币来凑出i,以最后一个硬币硬币为突破口,假设最后一个硬币值为a,则只需算出f[i-a]的值为多少,加一即可,是一个典型的动态规划问题,若凑不出来则置为-1。 源码 public class Solution { /** * @param coins: a list of integer * @param amount: a total amount of money amount

weixin_51624761的博客 2651

基于FPGA低频方波测量-频率与占空比

基于FPGA低频方波测量-频率与占空比

DRAXY的博客 6732

国内有哪些好的刷题网站?

参考网站:http://www.sohu.com/a/142777690_465221?p=qq 来自:知乎 本人现在正在学习数据结构与算法,想通过刷题练习一下分析问题,解决问题的能力。请问国内有哪些好的刷题网站? CoderAfterWork靠写代码挣钱去浪... 刷题也就这么点地方 1、Leetcode 鼎鼎大名的Leetcode,据不完全统计在上面被刷过的题可以围绕地球三圈。...

qq_42794545的博客 2009

电子病历编辑器源码(Springboot+原生HTML)

应用场景包括:电子病历书写、体温单录入、全平台信息采集、检验检查报告、不良事件上报等。 此外,电子病历编辑器软件还适用于医生工作站的病历编辑、护士工作站的护理记录输入、PASC/LIS/RIS报告编辑打印、病案首页、出院小结、病程记录、手术记录、各种知情书、康复及精神学科用的量表、临床路径用表单界面等等。 这些应用场景都涉及到了医疗文书编辑的需求,因此电子病历编辑器软件在这些场景中具有广泛的应用价值。

xingchen优快云的博客 3894

大数据知识面试题-Hadoop(2022版)

序列号 内容 链接 1 大数据知识面试题-通用(2022版) 待续… 2 大数据知识面试题-Hadoop(2022版) 待续… 3 大数据知识面试题-MapReduce和yarn(2022版) 待续… 4 大数据知识面试题-Zookeepr (2022版) 待续… 5 大数据知识面试题-Hive (2022版) 待续… 6 大数据知识面试题-Flume(2022版) 待续… 7 大数据知识面试题-Hbase(2022版) 待续… 8 大数据知识面试题-sqoop(....

拉格朗日的学习笔记 1万+

程序员常用的刷题网站,你不会都没用过吧?

又要到了跳槽的高峰季,很多程序员都蠢蠢欲动想要跳槽换工作,并开始了刷题,为的就是巩固提升自己的能力,今天就分享一些程序员常用的刷题网站,希望对大家有所帮助。

程序员小麦的博客 4463

掌握RDMA核心:从同步构建到异步事件的连接艺术

本文深入解析RDMA编程中的双模式设计,揭示同步配置与异步事件机制的协作关系。第一部分阐述同步函数rdma_bind_addr和rdma_listen的本地化角色,强调它们仅完成本地端点配置。第二部分剖析异步事件模型,重点分析连接请求和建立事件的处理流程。通过完整生命周期序列图展示两种模式的交互过程,并提供错误处理、资源管理和性能调优的实用建议。文章指出,理解同步本地配置与异步网络响应这一责任划分,是掌握RDMA编程的关键所在。

数字人生 281

ACM-ICPC 常用算法刷题网站整理

ACM-ICPC 常用算法刷题网站整理(转)2018.08.15 07:45:42字数 1226阅读 3411ACM-ICPC 常用算法刷题网站整理         转载From http://blog.youkuaiyun.com/bat67/article/details/72765485 &nb...

m0_43454989的博客 2296

基于STM32设计的指针式电子钟与万年历(升级版)

这是基于STM32设计的一个指针式电子钟+万年历小项目,采用3.5寸的LCD屏显示时钟,日历、温度、天气,支持触摸屏调整设置时间,设置闹钟,查看日历等等。整体项目主要是技术点就是LCD屏的图形绘制。比如: 时钟的时针绘制、分针、秒针、表盘、日历绘制等等。

1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

比较好的刷题网站推荐

http://www.cnblogs.com/DarrenChan/p/5648422.html   1.Leetcode鼎鼎大名的Leetcode,据不完全统计在上面被刷过的题可以围绕地球三圈。(没说赤道哈,就是这么严谨。)总之,很多国内外的码农在上面刷题。难度从easy到hard都有,而且覆盖面极广。现在还增加了数据库和shell,相匹配的论坛也可以多看看。很锻炼和国外码农沟通的能力,...

weixin_33922672的博客 199

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大公司笔试面试有哪些经典算法题目?

首先,强烈建议采用“题海战术”。我当然不会告诉题主,今年面了数十家公司,90%的题目是原题(没办法,就那几个知识点,能有什么新题) 题库在哪里呢?按照循序渐进的原则,一一介绍: cc150,全名cracking the coding interview - 150 Programming Questions and Solutions。经典中的经典,曾有人别的啥都不做,刷这本书三四遍,拿了Goog

2823

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

程序员专门刷题的网站

从国内外分的话, 国内: 1. [九度OJ](题库-九度Online Judge,用代码记录你的成长之路!):王道论坛或者考计算机408的同学也许听过,目前已经收录了各高校上机复试真题,还有些名企笔试题,但好久没更新了。考研准备复试的同学可以参考下。 2. [牛客OJ](在线编程_C++Java前端经典笔试面试题库) 题目挺全的,包含《剑指Offer》66题,校招真题105题,leecode148题,ACM训练题7418题(变态),计算机考研复制233题,华为机试108题,还有一些其他js题。但支持语言不.

qq_40544338的博客 1336

leetcode刷题

力扣(LeetCode)是领扣网络旗下专注于程序员技术成长和企业技术人才服务的品牌。源自美国硅谷,力扣为全球程序员提供了专业的IT技术职业化提升平台,有效帮助程序员实现快速进步和长期成长。此外,力扣(LeetCode)致力于解决程序员技术评估、培训、职业匹配的痛点,逐步引领互联网技术求职和招聘迈向专业化。步骤一:在浏览器输入www.leetcode.com步骤二:点击右上角注册步骤三:注册登录后,点击右上角的Online judge。

weixin_46414659的博客 247

ACM-ICPC 常用算法刷题网站整理(转)

ACM-ICPC 常用算法刷题网站整理 转载Fromhttp://blog.youkuaiyun.com/bat67/article/details/72765485 以及http://blog.youkuaiyun.com/pinellina/article/details/46843165...

weixin_34072159的博客 364
上一篇: 量刑辅助系统项目(1)——python删选文件
下一篇: Leetcode 542. 01 Matrix(BFS)
雨狮子
博客等级 码龄12年 24粉丝 185原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值