news 2026/6/9 23:50:00

Java模拟算法题目练习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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)详细解析或更多代码,随时提问。加油!🚀

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 20:10:54

告别环境配置噩梦:小白也能懂的Z-Image-Turbo快速入门

告别环境配置噩梦&#xff1a;小白也能懂的Z-Image-Turbo快速入门 你是否对AI绘画充满兴趣&#xff0c;却被各种技术术语和环境配置要求吓退&#xff1f;Z-Image-Turbo作为一款强大的文生图模型&#xff0c;能够帮助你轻松实现创意绘画。本文将带你从零开始&#xff0c;无需复杂…

作者头像 李华
网站建设 2026/6/9 18:43:48

通达信能量指标

{}V1:DMA((((HIGH LOW) (CLOSE * 2)) / 4),0.9); HY1:REF(EMA(V1,3),1); 多空趋势:(MA((CLOSE - HY1) * 28,2))*0.1; 换手:V*100/CAPITAL; 主力:MA(换手,4); 大户:MA(换手,9); 中户:MA(换手,17); 散户:MA(换手,34); 均量:(主力大户中户散户)/4; 成交量:V,COLORWHITE,NODRAW; …

作者头像 李华
网站建设 2026/6/9 19:41:20

实战案例分享】利用三菱PLC和组态王实现智能化鸡舍温湿度控制系统,提升养鸡场效益

基于三菱PLC和组态王鸡舍温湿度控制养鸡场鸡舍环境控制是现代化养殖的关键环节。三菱FX3U PLC配合组态王软件搭建的温湿度监控系统&#xff0c;让养鸡场的环境参数管理变得直观可控。这套系统的核心逻辑其实并不复杂——传感器采集数据&#xff0c;PLC处理逻辑&#xff0c;上位…

作者头像 李华
网站建设 2026/6/9 20:12:32

8步出图不是梦:手把手教你用云端Z-Image-Turbo实现高效创作

8步出图不是梦&#xff1a;手把手教你用云端Z-Image-Turbo实现高效创作 作为一名内容创作者&#xff0c;你是否曾被AI图像生成的无限可能所吸引&#xff0c;却又被复杂的框架安装、依赖管理和显存问题劝退&#xff1f;今天我要分享的Z-Image-Turbo镜像&#xff0c;正是为解决这…

作者头像 李华
网站建设 2026/6/9 18:45:24

Z-Image-Turbo创意工坊:无需编码的AI艺术创作平台

Z-Image-Turbo创意工坊&#xff1a;无需编码的AI艺术创作平台 为什么选择Z-Image-Turbo创意工坊 对于儿童编程教育机构来说&#xff0c;引入AI艺术课程最大的挑战是如何让低龄学生也能轻松上手。传统的AI图像生成工具往往需要复杂的代码编写和环境配置&#xff0c;而Z-Image-Tu…

作者头像 李华