当前位置: 首页 > news >正文

Java模拟算法题目练习

Java 算法题目练习实战指南

算法是程序员的核心竞争力,尤其在面试中。Java 作为主流语言,实现算法高效且优雅。本指南针对初学者到中级开发者,提供经典算法题目练习,结合 LeetCode 和《剑指 Offer》高频题。所有代码基于 Java 17+,已验证可运行。我们从基础概念开始,逐步深入实战。

1. 算法基础:时间与空间复杂度

理解 Big O 表示法是刷题前提。它描述算法随着输入规模增长的性能。

常见复杂度:O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(2ⁿ)

2.常见数据结构可视化

掌握数据结构是算法基础。

3. 排序算法实战

排序是经典考点。这里实现三种常见算法,并可视化过程。

冒泡排序 (Bubble Sort)

publicclassBubbleSort{publicstaticvoidsort(int[]arr){for(inti=0;i<arr.length-1;i++){for(intj=0;j<arr.length-1-i;j++){if(arr[j]>arr[j+1]){inttemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}publicstaticvoidmain(String[]args){int[]arr={5,3,8,4,2};sort(arr);System.out.println(Arrays.toString(arr));// [2, 3, 4, 5, 8]}}

时间复杂度:O(n²)

快速排序 (Quick Sort)

publicclassQuickSort{publicstaticvoidsort(int[]arr,intlow,inthigh){if(low<high){intpi=partition(arr,low,high);sort(arr,low,pi-1);sort(arr,pi+1,high);}}privatestaticintpartition(int[]arr,intlow,inthigh){intpivot=arr[high];inti=low-1;for(intj=low;j<high;j++){if(arr[j]<pivot){i++;inttemp=arr[i];arr[i]=arr[j];arr[j]=temp;}}inttemp=arr[i+1];arr[i+1]=arr[high];arr[high]=temp;returni+1;}publicstaticvoidmain(String[]args){int[]arr={5,3,8,4,2};sort(arr,0,arr.length-1);System.out.println(Arrays.toString(arr));// [2, 3, 4, 5, 8]}}

平均时间复杂度:O(n log n)

4. LeetCode / 剑指 Offer 经典题目实战

选几道高频题,提供 Java 实现。

两数之和 (LeetCode 1)

importjava.util.HashMap;classSolution{publicint[]twoSum(int[]nums,inttarget){HashMap<Integer,Integer>map=newHashMap<>();for(inti=0;i<nums.length;i++){intcomplement=target-nums[i];if(map.containsKey(complement)){returnnewint[]{map.get(complement),i};}map.put(nums[i],i);}returnnewint[]{};}}

时间:O(n),空间:O(n)

反转链表 (LeetCode 206 / 剑指 Offer 24)

classListNode{intval;ListNodenext;ListNode(intx){val=x;}}classSolution{publicListNodereverseList(ListNodehead){ListNodeprev=null;ListNodecurr=head;while(curr!=null){ListNodenext=curr.next;curr.next=prev;prev=curr;curr=next;}returnprev;}}

迭代实现,O(n) 时间。

最大子数组和 (LeetCode 53 / 剑指 Offer 42)

classSolution{publicintmaxSubArray(int[]nums){intmax=nums[0];intsum=0;for(intnum:nums){sum=Math.max(num,sum+num);max=Math.max(max,sum);}returnmax;}}

Kadane 算法,O(n)。

二维数组中的查找 (剑指 Offer 04)

classSolution{publicbooleanfindNumberIn2DArray(int[][]matrix,inttarget){if(matrix==null||matrix.length==0||matrix[0].length==0)returnfalse;introws=matrix.length,cols=matrix[0].length;introw=0,col=cols-1;while(row<rows&&col>=0){if(matrix[row][col]==target)returntrue;elseif(matrix[row][col]>target)col--;elserow++;}returnfalse;}}

从右上角开始,O(m + n)。

刷题建议与资源

坚持练习,算法能力会飞速提升!如果需要特定题目(如二叉树、DP)详细解析或更多代码,随时提问。加油!🚀

http://www.cnnetsun.cn/news/504582.html

相关文章:

  • 【Python零基础到进阶】函数
  • AI辅助设计新时代:用Z-Image-Turbo加速创意工作流
  • 非常实用的主升买点指标 /预警 通达信 贴图绝无未来函数
  • 通达信波浪拐点公式
  • 胜利大逃亡_抄底逃顶看得清的指标公式
  • 隐私保护方案:如何在本地快速部署Z-Image-Turbo离线版
  • 基于人工蜂群算法(ABC)的MATLAB数值计算求解框架
  • AI摄影棚:虚拟产品拍摄的环境光效智能生成
  • 计算机毕业设计springboot学科竞赛管理系统 基于Spring Boot的学科竞赛信息管理系统开发 Spring Boot框架下的学科竞赛管理平台设计与实现
  • 解放生产力:如何用Z-Image-Turbo预置镜像加速创意工作流
  • java学习网站,零基础入门到精通,收藏这篇就够了
  • Z-Image-Turbo进阶玩法:快速搭建自定义Lora训练环境
  • 模型融合实战:结合Z-Image-Turbo与Stable Diffusion的优势
  • Z-Image-Turbo安全部署指南:保护你的AI服务免受攻击
  • Thinkphp的社区诊所在线挂号与排队应用系统
  • 成本优化指南:按需使用Z-Image-Turbo云端GPU的聪明方法
  • 1688商品详情API接口深度解析
  • 纳斯达克股票数据API对接指南
  • 阿里通义Z-Image-Turbo API开发:从预配置环境到服务部署
  • 【实证分析】上市公司微观企业劳动力生产率数据-含代码及原始数据(1999-2024年)
  • Z-Image-Turbo性能对决:云端GPU vs 本地部署实测指南
  • Z-Image-Turbo灾难恢复:快速重建你的AI绘画服务环境
  • 高情商项目经理的标志:不靠指令靠沟通,零对抗推进项目
  • 基于SpringCloud的分布式演唱会抢票系统(源码+论文+部署+安装)
  • AI的进化:从“失忆”到“过目不忘”,认知型RAG技术深度解析
  • 论文修改降重实战:如何有效降低论文AI率通过知网AIGC检测?
  • 论文降重神器推荐:大学生如何高效降低论文AI率?【
  • C++ 修饰符类型
  • 懒人必备!阿里通义Z-Image-Turbo WebUI十分钟快速上手指南
  • 【道路缺陷检测】道路缺陷检测【含GUI Matlab源码 14871期】