算法题

Java算法题 在技术笔试中,算法题主要考察对基础数据结构(数组、链表、树、栈 / 队列、图)的掌握,以及经典算法思想(动态规划、贪心、查找排序、回溯)的应用。以下按分类,整理高频笔试算法题,包含题目描述、核心思路与代码实现(以 Java/Python 为主,兼顾可读性与效率)。 阅读详情

算法题


  • 奥数题:假如电子记时器所显示的十个数字是“0126093028”这样一串数,它表示的是1月26日9时30分28秒.在这串数里,“0”出现了3次,“2”出现了2次,“1”、“3”、“6”、“8”、“9”各出现1次,而“4”、“5”、“7”没有出现.如果在电子记时器所显示的这串数里,“0,1,2,3,4,5,6,7,8,9”这一个数字都只出现一次,称它所表示的时刻为“十全时”那么2003年一共有( )个这样的“十全时?

PS:算法完善打印每个十全时
- (void)get2003 {
    int result = 0;
    //每月多少天数组
    NSMutableArray *dayOfPerMonth = [NSMutableArray array];
    for (int i = 1; i < 13; i++) {
        [dayOfPerMonth addObject:[NSString stringWithFormat:@"%zd", [self howManyDaysInThisYear:2003 withMonth:i]]];
    }

    //二维数组创建
    NSMutableArray *dayArr = [NSMutableArray array];
    for (int i = 0; i < 13; i++) {
        [dayArr addObject:[NSMutableArray arrayWithCapacity:32]];
    }

    //初始化二维数组
    for (int i = 0; i < dayArr.count; i++) {
        for (int j = 0; j < 32; j++) {
            if (i > 0 && j > 0 && j <= [dayOfPerMonth[i==0 ? 0 : i-1] intValue]) {
                [dayArr[i] setObject:@1 atIndexedSubscript:j];
            }
            else {
                [dayArr[i] setObject:@0 atIndexedSubscript:j];
            }
        }
    }

    //得到前四位数的组合
    for (int i = 0; i < dayArr.count; i++) {
        for (int j = 0; j < 32; j++) {
            //第一次筛选
            if ([[dayArr[i] objectAtIndex:j] isEqualToValue:@1]) {
                //月日四位数0101
                NSString *strOfPreFour = [self getPre4StringWithString:[self intToString:i] dayString:[self intToString:j]];
                //判断四位数是否中是否重复或者同时包含0,1,2
                if (![self validateString:strOfPreFour]) {
                    [dayArr[i] setObject:@0 atIndex:j];
                }
            }
            //第二次筛选出结果
            if ([[dayArr[i] objectAtIndex:j] isEqualToValue:@1]) {

                //得到其余六位数
                NSString *strOfPreFour = [self getPre4StringWithString:[self intToString:i] dayString:[self intToString:j]];
                NSMutableArray *arr = [NSMutableArray array];
                for (int h = 0; h < strOfPreFour.length; h++) {
                    [arr addObject:[NSString stringWithFormat:@"%c", [strOfPreFour characterAtIndex:h]]];
                }

                //六位数组
                NSMutableArray *sixArray = [NSMutableArray arrayWithObjects:@"0", @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9",nil];
                [sixArray removeObjectsInArray:arr];

                //六位字符串
                NSString *sixStr = [NSString string];
                for (NSString *str in sixArray) {
                    sixStr = [sixStr stringByAppendingString:str];
                }
                //判断六位数小于6的个数
                int lessSixCount = 0;
                for (int p = 0; p < sixArray.count; p++) {
                    if ([sixArray[p] intValue] < 6) lessSixCount++;
                }
                //判断有没有1,或2
                if (lessSixCount >= 3) {
                    if ([sixStr containsString:@"1"]) {
                        if (lessSixCount == 3) {
                            result += 12;
                            NSLog(@"%@--%@", strOfPreFour, sixStr);
                            //得到六位数字的数组
                            NSMutableArray *sixArray = [NSMutableArray arrayWithCapacity:6];
                            for (int i = 0; i < [sixStr length]; i++) {
                                [sixArray addObject:[NSString stringWithFormat:@"%c",[sixStr characterAtIndex:i]]];
                            }

                        }
                        else  {
                            result +=36;
                            NSLog(@"%@--%@", strOfPreFour, sixStr);
                        }
                    }
                    else if ([sixStr containsString:@"2"]) {
                        if (lessSixCount == 4) {
                            result += 4;
                            NSLog(@"%@--%@", strOfPreFour, sixStr);
                        }
                    }
                }
            }

        }
    }
    NSLog(@"2003年有%i个十全时", result);

}
/**
 *  判断四位数是否中是否重复或者同时包含0,1,2
 *  不满足条件返回NO
 */
- (BOOL)validateString:(NSString *)str {

    if ([str containsString:@"0"] && [str containsString:@"1"] && [str containsString:@"2"]) {
        return NO;
    }
    for (int k = 0; k < str.length; k++) {
        if ([[[str substringToIndex:k] stringByAppendingString:[str substringFromIndex:k+1]] containsString:[NSString stringWithFormat:@"%c", [str characterAtIndex:k]]]) {

            return NO;
        }
    }
    return YES;
}
/**
 *  int类型转换固定字符串,例子:1->01
 */
- (NSString *)intToString:(int)intVal {
    return intVal < 10 ? [NSString stringWithFormat:@"0%i", intVal] : [NSString stringWithFormat:@"%i", intVal];
}
/**
 *  得到月日四位数
 */
- (NSString *)getPre4StringWithString:(NSString *)monthStr dayString:(NSString *)dayStr {
    return [NSString stringWithFormat:@"%@%@", monthStr, dayStr];
}
/**
 *  获得某年某月的天数
 */
- (NSInteger)howManyDaysInThisYear:(NSInteger)year withMonth:(NSInteger)month{
    if((month == 1) || (month == 3) || (month == 5) || (month == 7) || (month == 8) || (month == 10) || (month == 12))
        return 31 ;

    if((month == 4) || (month == 6) || (month == 9) || (month == 11))
        return 30;

    if((year % 4 == 1) || (year % 4 == 2) || (year % 4 == 3))
        return 28;

    if(year % 400 == 0)
        return 29;

    if(year % 100 == 0)
        return 28;

    return 29;
}
【搞定算法】常见算法题分类总览 博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl_Java 一起交流秋招面试经验,可获得博主的秋招简历和复习笔记。 完善中...... 由于本人平时刷题比较零散,有时候找起来不是很方便,所以统一将题目记录于此。主要的题目来源自:剑指 Offer、LeetCode、左神算法、面试、笔试、面经等等。下面按照分类记录: 说明(个人见解): 一、标注说明 ... 阅读详情

相关推荐

面试总结之算法题

在一个多月的面试过程中,有很多需要讲思路或实现的算法或其他题目,这里总结下作为复习。后面不断更新。

Coding的博客 1428

按照年份计算十全时的个数

题目: 假如电子计时器所显示的十个数字是“1115093028”这样一串数,它表示的数是11月15日9时30分28秒. 在这串数中,“0”出现了2次,“1”出现了三次,“2”、“3”、“5”、“8”、“9”各出现了一次, 而“4”、“6”、“7”没有出现.如果在电子计时器所显示的这串数里,0,1,2,3,4,5,6,7,8,9这 十个数字都只出现一次,称它所表示的时刻为“十全时”,那么2...

weixin_30525825的博客 346

微软面试算法题总结

Leecode 84 第一题是数字三角形找最大和路径 (容易题) 第二题是二叉树中找两个节点的最近公共祖先节点 (最近公共祖先) 给定二叉树中的特定节点中序遍历后的下一个节点 (剑指offer) Leetcode 124 最大路径和 做题 (并查集) 有n个二维平面上的点和距离d,将它们分成k组。 若两点间的距离小于等于d,则这两个点在一组;如果点A和点B在一组,点B和点C在一组,则点A和点C...

wwxy1995的博客 3919

十全时数——java代码(深搜)

假如电子计时器所显示的十个数字是“1115093028”这样一串数,它表示的数是11月15日9时30分28秒. 在这串数中,“0”出现了2次,“1”出现了三次,“2”、“3”、“5”、“8”、“9”各出现了一次, 而“4”、“6”、“7”没有出现.如果在电子计时器所显示的这串数里,0,1,2,3,4,5,6,7,8,9这 十个数字都只出现一次,称它所表示的时刻为“十全时”,那么2003年一共有

Me丿以卿之名 2266

算法题目录

考点分类考点分类按照算法考点对题目进行划分整理,刷一题了解一类题型,短时间速通ACM输入输出处理常规ACM模式输入输出处理对Java、JS、Python的控制台输入输出做了详细的介绍,以及难点,易错点总结ACM模式不定行输入处理策略技术面手撕算法题技术面 - 手撕算法题整理收集并整理考友反馈的高频面试真题技术面八股文整理技术面 - 八股文整理收集并整理考友反馈的高频八股文问题。

优快云 51万+

IC版图设计布局经验90条!

13 如果一个cell调用其它cell,被调用的cell的vssx,vddx,vssb,vddb如果没有和外层cell连起来,要打上PIN,否则通不过diva检查.尽量在布局低层cell时就连起来。48 在匹配电路的mos管左右画上dummy,用poly,poly的尺寸与管子尺寸一样,dummy与相邻的第一个poly gate的间距等于poly gate之间的间距。8 更改cell时查看路径,一定要在正确的library下更改,以防copy过来的cell是在其他的library下,被改错。

weixin_44606964的博客 910

那些惊艳的算法们(三)—— 时间轮

同步发表于:http://blog.lanjingdejia.com/articles/2018/08/13/1534132662997.html 从定时任务说起 自然界中定时任务无处不在,太阳每天东升西落,候鸟的迁徙,树木的年轮,人们每天按时上班,每个月按时发工资、交房租,四季轮换,潮涨潮落,等等,从某种意义上说,都可以认为是定时任务。 大概很少有人想过,这些“定时”是怎样做到的。当然,计算机...

xinzhongtianxia的博客 2万+

matlab锅炉 pid仿真,基于Matlab锅炉仿真.doc

基于Matlab锅炉仿真内蒙古科技大学MATLAB课程设计任务书2012题 目:锅炉汽包水位控制系统学生姓名:林三彪学 号:0967112127专 业:测控技术与仪器班 级:2009-1指导教师:梁 丽摘 要锅炉是化工、炼油、发电、造纸和制糖等工业生产过程中必不可少的重要动力设备。锅炉往往成了不少工厂不可缺少的一部分,因而,对锅炉设备中的自动控制系统进行分析研究是必要的...

weixin_29133981的博客 1096

二叉树算法题

后,我们了解了二叉树的相关概念和性质,并且实现了顺序结构二叉树——堆和链式结构二叉树,那么在本篇中我们就来试着解决一些二叉树相关的算法题,相信通过这些练习之后你会对二叉树有更深的理解。在之前二叉树的相关章节(

mljy.博客 2736

别再乱点U盘里的.exe了!手把手教你彻底清除那个伪装成Usb Disk的蠕虫病毒

本文详细介绍了如何识别、清除和预防伪装成Usb Disk的蠕虫病毒。从识别感染迹象到安全备份文件,再到深度清理病毒残留和构建防护策略,提供了一套完整的U盘病毒解决方案。特别提醒用户注意U盘病毒的风险,并养成良好的使用习惯。

weixin_30496999的博客 665

MaxEnt物种分布预测中的常见误区与优化技巧:如何提高模型准确率

本文深入探讨了MaxEnt物种分布预测模型从基础应用到精准预测的进阶实践。针对模型准确率提升,文章系统分析了环境变量筛选、模型参数调优、结果批判性解读等核心环节的常见误区,并提供了基于生态位模型原理的深度优化技巧,帮助研究者产出更可靠、可解释的预测结果。

weixin_29219539的博客 594

链表算法题

通过观察,我们可以发现,当slow指针走一步时,fast指针走一步或是走两步都满足slow指针指向的是已经遍历过的结点的中间结点。也就是slow指针走一步,fast指针最多可以走两步。所以,我们可以遍历。

2301_80224556的博客 1017

Unity中基于SkinMeshRenderer的骨骼动画换装系统优化实践

本文深入探讨了Unity中基于SkinnedMeshRenderer的骨骼动画换装系统优化实践。针对换装卡顿、显示错误等常见问题,文章剖析了SkinnedMeshRenderer的核心数据原理,对比了“数据替换”与“实体替换”两种主流方案的性能差异,并详细阐述了通过骨骼字典缓存、对象池管理、材质合并与Draw Call优化等实战技巧,构建高性能、高稳定性的生产级换装系统。

weixin_29008055的博客 314

几个简单而又有趣的Python算法题

1. 前言 作为一个合格的程序员,如果仅仅只是对工具或者框架熟悉,而不清楚算法,这肯定不是一个合格的,能够经得起时间考验的程序员。如果把程序员比作是一个武林高手,那么他的算法能力就是他的内功,只有内功修炼深厚了,学习框架,语言或者工具等才会快,并且能够真正的理解他们的用法。作为一个半路出家的低端程序员,为了锻炼自己的算法能力,于是决定在leetcode上刷题来提高自己。就这段时间以来我所遇到的一...

qq_40056626的博客 1万+

基于Vivado MIG IP核的DDR3读写实验(top_rom_ddr/ddr_top)

一、前言 关于Vivado MIG IP核详细配置可以参考我之前的文章:基于Vivado MIG IP核的DDR3控制器(DDR3_CONTROL) 关于MIG IP核的用户端的接口时序可以参考这篇文章:XILINX 的 MIG IP(非AXI4)接口时序以及控制 二、实验内容 本次实验的内容主要是通过MIG IP核向DDR3读写数据,DDR3的接口时序由ddr_top模块提供: ddr_top模块的数据来源是wr_fifo,wr_fifo的数据实际来自top_sd_photo模块(本实验仿真

耐心的小黑的博客 3027

KingSCADA3.8保姆级安装教程

大家好,我是雷工!最近开始学习KingSCADA,今天这篇详细记录安装KingSCADA3.8的过程。首先下载需要的安装版本,此处以从官网下载的最新版本KingSCADA3.8为例,双击:Setup.exe;

做有价值的事,积累有价值的笔记! 1万+

算法题到底该怎么刷?高效刷题方法

算法题到底该怎么刷?高效刷题方法

weixin_41171614的博客 4100

【论文硬核拆解】Ctx2Skill:让大模型自己跟自己玩,从上下文里「进化」出可复用技能

论文选择自然语言技能可解释性:技能是人类可读的 Markdown 文件,可以审查、编辑、调试可迁移性:即插即用,从一个模型到另一个模型无需参数访问:对闭源模型友好这比 SKILL0/SkillRL 等参数内化方法更实用,尤其是在商业 API 场景。

步子哥的博客 152

算法题的三大题型

大家好,我是前端西瓜哥,今天来聊算法。你去 LeetCode 刷题,你会发现题目会分为三大类。分别为:编程题找规律题算法题编程题编程题,就是纯编程的题目。这种题目不需要你有数据结构与算法知识,更像是开发工作中遇到的一些实际问题。题目讲的很清楚,要你实现什么功能,你不需要思考该用二叉树、动态规划来解还是什么的。思路通常都是简单明了的,一看就知道怎么去写。简单来说,就是用代码的方式翻译。但它的难点就在于它的边界条件很多,有些底层的方法要自己实现。比如 334 题. 反转字符串,需要你自己实现一个反转方法,且不能

fe_watermelon的博客 1263

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android 蓝牙通讯demo

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

栈和队列算法题

在学习了栈和队列的相关概念并且在之前也实现了栈和队列,接下来我们就来试着写一些栈和队列的算法题,在这些算法题当中将会使用到之前实现的栈或者队列,栈、队列在这当中将会变为工具一样,我们就会像工具一样拿着它们去解决问题,相信通过本篇算法题的解决,你会对栈和队列有更深层次的理解,一起加油吧!

mljy.博客 1552

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

链表算法题(下)

长中我们已经学习了一系列的链表算法题在本篇中我们将继续来学习链表的算法题,接下来就继续来破解算法题吧!

mljy.博客 1844

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Leetcode高频算法题——字节跳动篇

众所周知,字节跳动面试非常喜欢考算法题。 Leetcode官方的企业题库不仅付费,而且题量非常大。 因此,我从20年7月开始,手动整理牛客面经涉及的Leetcode算法题,并按照频度由高到低进行了排列。以下列出的250多道高频题目。 如果你想查看按部门、岗位查看高频算法题,或者查看其他大厂的题库,可以使用我开发的CodeTop:https://codetop.cc 字节跳动题库已覆盖抖音、飞书、架构、data、商业变现、懂车帝、电商、今日头条等20多个部门。 字节跳动高频题(更新至2021年4.10日)

Erazer_Control 8997

顺序表算法题

后,了解的顺序表的结构以及相关概念后就可以来试着完成一些顺序表的算法题了,在本篇中将对三道顺序表相关的算法题进行讲解,希望能对你有所帮助,一起加油吧!

mljy.博客 1390

算法题day01

分别写两个函数找左右边界,初始值都设置为-2。处理三种情况,元素不存在时返回{-1,-1},存在时返回{leftBorder + 1, rightBorder + 1},其他情况也返回{-1,-1}找左边界就一直往左找,一直找然后把middle - 1 赋值给leftBorder。找右边界就一直往右找,一直找然后把middle + 1 赋值给rightBorder。

weixin_52083001的博客 1827

字符串,栈的算法题

虽然说,我们这里是简单的介绍字符串的题目一般是怎么做,但是不太会深入介绍更多的字符串的算法。

2301_80224556的博客 1119

场景题/算法题

本系列文章初衷是为了整理出最全面最详细的C/C++后端开发面经,非常适用于想走后端/软件开发的同学!本面经不仅仅是简单问答,而是帮你深入理解和掌握知识点,其中一些晦涩难懂的知识点,全都用案例和代码帮你彻底掌握。本篇主要是针对面试中常见的场景题、算法题、分析题、MySQL题等多个系列题目进行详细分析,每道题都详细给出算法思路、解题步骤和代码实现,保证让你彻底搞懂!

weixin_46571171的博客 1472
上一篇: 算法编程题#iOS
下一篇: 优雅的长按Cell移动 DHMovableExtension
daniel_xing
博客等级 码龄14年 4粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值