常见算法题
1、冒泡排序
主要运用双层for循环嵌套,进行冒泡排序 public class BubbleSortTest { public static void main(String[] args) { int[] arr = new int[]{-12,3,2,34,5,8,1}; //冒泡排序 for(int i = 0;i < arr.length-1;i++){//外层循环控制排序趟数 for(int j = 0;j <arr.length-1-i;j++){//内层循环控制每一趟排序多少次 if(arr[j] >arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } //遍历 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]+"\t"); } } }
2、删除排序数组中的重复项
3、两数之和
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
示例:给定 nums = [2, 7, 11, 15], target = 9,因为 nums[0] + nums[1] = 2 + 7 = 9,所以返回 [0, 1]
暴力方法:
public int[] twoSum (int[] numbers, int target) { // write code here int [] twoindex = new int[2]; for(int i = 0;i<numbers.length-1;i++){ for(int j = i+1;j<numbers.length;j++){ if((numbers[i]+numbers[j])==target){ twoindex[0]=i; twoindex[1]=j; return twoindex; } } } return null; }
用Hash:
public class Solution { public int[] twoSum (int[] numbers, int target) { int[] result = new int[2]; Map<Integer, Integer> map = new HashMap(); for(int i = 0; i < numbers.length; i++) { if(map.get(target - numbers[i]) != null) { result[0] = map.get(target - numbers[i]); result[1] = i; return result; } map.put(numbers[i], i); } return result; } }
4、最小的K个数
题目描述
给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组
import java.util.ArrayList; public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer> list= new ArrayList<>(); if(input.length<k) return list; else{ for(int i=0;i<input.length-1;i++) for(int j=0;j<input.length-1-i;j++) if(input[j+1]<input[j]){ int temp=input[j+1]; input[j+1]=input[j]; input[j]=temp; } for(int m=0;m<k;m++) list.add(input[m]); } return list; } }
5、二分查找
public static int binarySearch(int[] arr, int x) { 8 int low = 0; 9 int high = arr.length-1; 10 while(low <= high) { 11 int middle = (low + high)/2; 12 if(x == arr[middle]) { 13 return middle; 14 }else if(x <arr[middle]) { 15 high = middle - 1; 16 }else { 17 low = middle + 1; 18 } 19 } 20 return -1; 21 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端