- 0
- 0
- 约6.61千字
- 约 8页
- 2026-03-14 发布于河北
- 举报
程序员笔试题及答案
一、基础编程题(每题15分,共45分)
1.题目:两数之和(简单)
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。假设数组中只有一个正确答案,且同一个元素不能被重复使用。
示例:nums=[2,7,11,15],target=9→输出:[0,1]
要求:用两种方法实现,分析时间复杂度和空间复杂度。
答案:
方法一:暴力枚举法
java
publicint[]twoSum(int[]nums,inttarget){
intn=nums.length;
for(inti=0;in;i++){
for(intj=i+1;jn;j++){
if(nums[i]+nums[j]==target){
returnnewint[]{i,j};
}
}
}
//题目保证有答案,此处仅为编译通过
returnnewint[0];
}
复杂度分析:时间复杂度O(n2),两层循环遍历数组;空间复杂度O(1),未使用额外存储空间。
方法二:哈希表法(最优解)
java
publicint[]twoSum(int[]nums,inttarget){
MapInteger,Integermap=newHashMap();
for(inti=0;inums.length;i++){
intcomplement=target-nums[i];
if(map.containsKey(complement)){
returnnewint[]{map.get(complement),i};
}
map.put(nums[i],i);
}
returnnewint[0];
}
复杂度分析:时间复杂度O(n),仅遍历一次数组;空间复杂度O(n),哈希表最多存储n个元素。
2.题目:字符串反转(简单)
实现一个函数,将字符串中的每个单词反转,但保留单词的顺序不变。单词以空格分隔,假设字符串中无多余空格。
示例:输入:helloworld→输出:ollehdlrow
答案:
java
publicStringreverseWords(Strings){
//分割单词
String[]words=s.split();
StringBuilderresult=newStringBuilder();
for(inti=0;iwords.length;i++){
//反转单个单词
char[]chars=words[i].toCharArray();
intleft=0,right=chars.length-1;
while(leftright){
chartemp=chars[left];
chars[left]=chars[right];
chars[right]=temp;
left++;
right--;
}
result.append(newString(chars));
//添加空格(最后一个单词后不添加)
if(i!=words.length-1){
result.append();
}
}
returnresult.toString();
}
复杂度分析:时间复杂度O(n),n为字符串总长度;空间复杂度O(n),用于存储分割后的单词和结果。
3.题目:有效的括号(中等)
给定一个只包括(,),{,},[,]的字符串s,判断字符串是否有效。有效字符串需满足:
1.左括号必须用相同类型的右括号闭合。2.左括号必须以正确的顺序闭合。
示例1:输入:()→输出:true;示例2:输入:([)]→输出:false
答案:
java
publicboolea
您可能关注的文档
最近下载
- 《将进酒》说课课件(12张PPT)_20211215205119.pdf VIP
- 山西省教师晋升副高职称考试题库.pdf VIP
- 接触网设计规范(综合版).docx
- 统编版语文六年级下册第三单元教材解读+课件.pptx VIP
- 英语六级高频核心词汇速记.pdf VIP
- 中医护理的整体观念和辨证施护.pptx VIP
- 2025年中外历史纲要下 第二单元 第 4 课中古时期的亚洲(共38张PPT).ppt VIP
- 2026年江西旅游商贸职业学院单招综合素质考试题库及答案解析.docx VIP
- 2025年广东省广州市中考物理试卷及答案.docx VIP
- 2026年内蒙古化工职业学院单招(计算机)测试模拟题库附答案解析.docx VIP
原创力文档

文档评论(0)