java贪心算法的解题思路+代码
立即下载
资源介绍:
内容概要
在这篇文章中,我详细介绍了贪心算法的基本概念和常用策略,并通过多个经典的实际例子展示了贪心算法在解决各种问题中的应用。您将学习到:
贪心算法的核心思想和特点。
如何识别和设计贪心策略以解决特定问题。
使用Java编程语言实现贪心算法的具体代码示例。
对不同问题的优化思路和代码实现过程的详细解析。
适用人群
这篇文章适合以下几类人群:
编程初学者:希望了解并掌握贪心算法的基本概念和实现方法。
计算机科学专业学生:正在学习算法课程并需要更多实际例子的同学。
软件开发人员:需要在项目中应用贪心算法解决具体问题的工程师。
算法爱好者:对算法研究感兴趣并希望深入理解贪心算法的朋友。
使用场景
这篇文章适用于多种学习和工作场景,包括但不限于:
算法学习和复习:作为学习贪心算法的重要参考资料,帮助您巩固和提升算法知识。
编程面试准备:为准备编程面试的您提供具体的解题思路和代码实现,帮助您应对算法相关的面试题目。
项目开发实践:在实际项目中需要使用贪心算法时,提供可直接应用的代码示例和优化方案。
希望这篇文章能为您提供实用的帮助和启发,欢迎阅读并分享您的宝贵意见!
祝学习愉快!
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
/**
* Created with IntelliJ IDEA.
* Description:
* User: 周斌
* Date: 2024-05-13
* Time: 17:03
*/
public class Main {
//day6 排序 力扣2418 按身高排序
//方法一:利用哈希存下映射关系
public String[] sortPeople(String[] names, int[] heights) {
//1.先用map将身高与名字建立映射关系
Map map = new HashMap<>();
int n = names.length;
for (int i = 0; i < n; i++) {
map.put(heights[i], names[i]);
}
//2.对身高进行排序
Arrays.sort(heights);
//通过map将身高排序后对应的名字提取出来
int index = 0;
String[] str = new String[n];
for(int i = heights.length-1;i >= 0;i--) {
str[index++] = map.get(heights[i]);
}
return str;
}
//方法二:对下标进行排序(不改变数组中的元素位置)
public String[] sortPeople1(String[] names, int[] heights) {
int n = names.length;
// 1.创建下标数组
Integer[] index = new Integer[n];
for (int i = 0; i < n; i++) {
index[i] = i;
}
// 2.对下标数组排序(排序的规则是根据身高数组降序)
Arrays.sort(index, (i, j) -> {
return heights[j] - heights[i];
});
// 3.遍历下标数组的值作为names数组的下标传给新数组
String[] str = new String[n];
for (int i = 0; i < n; i++) {
str[i] = names[index[i]];
}
return str;
}
//day6 贪心算法练习870力扣 优势洗牌
public int[] advantageCount(int[] nums1, int[] nums2) {
// 1.排序
Arrays.sort(nums1);
int n = nums1.length;
Integer[] index2 = new Integer[n];
for (int i = 0; i < n; i++) {
index2[i] = i;
}
Arrays.sort(index2, (i, j) -> {
return nums2[i] - nums2[j];
});
// 2.比较
int left = 0, right = n - 1;
int[] ret = new int[n];
for (int i = 0; i < n; i++) {
if (nums1[i] > nums2[index2[left]]) {
ret[index2[left]] = nums1[i];
left++;
} else {
ret[index2[right]] = nums1[i];
right--;
}
}
return ret;
}
}
资源文件列表:
贪心算法.zip 大约有162个文件