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

天津建设银行网站首页营销推广策划方案

天津建设银行网站首页,营销推广策划方案,游戏开发需要什么技术,财务管理做的好的门户网站454. 四数相加II 题目链接:454. 四数相加II 思路:哈希法。使用map集合,key存放ab的值,value存放ab出现的次数。使用两层循环,循环前两个数组,找出ab,对map赋值。再用两层循环,遍历…

454. 四数相加II

题目链接:454. 四数相加II

思路:哈希法。使用map集合,key存放a+b的值,value存放a+b出现的次数。使用两层循环,循环前两个数组,找出a+b,对map赋值。再用两层循环,遍历后两个数组,找出符合map中符合目标的值,并通过value获取出现的次数并累加。(其实就是将四数相加变成两数相加,将时间复杂度从O(n4)降至O(n2)

时间复杂度:O(n2)

class Solution {public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {int count = 0;    // 统计a+b+c+d = 0 出现的次数Map<Integer, Integer> map = new HashMap<>();// 先遍历前两个数组,将a+b以及出现的次数放到map中for (int a : nums1) {for (int b : nums2) {map.put(a + b, map.getOrDefault(a + b, 0) + 1);}}// 然后遍历后两个数组,从map中找到符合条件的a+b并计数for (int c : nums3) {for (int d : nums4) {if (map.containsKey(0 - (c + d))) {count += map.get(0 - (c + d));}}}return count;}
}

383. 赎金信

题目链接:383. 赎金信

思路:哈希法。其实就是字母异位词的扩展题目,思路同字母异位词。

时间复杂度:O(n)

class Solution {public boolean canConstruct(String ransomNote, String magazine) {// 变向的字母异位词int[] count = new int[26];for (int i = 0; i < ransomNote.length(); i++) {count[ransomNote.charAt(i) - 'a']++;}for (int i = 0; i < magazine.length(); i++) {count[magazine.charAt(i) - 'a']--;}for (int i : count) {if (i > 0) {   // 仅在此处有差别return false;}}return true;}
}

15. 三数之和

题目链接:15. 三数之和

思路:使用双指针法。(本题的重点在于考察去重操作。)先对数组进行排序。使用i遍历一遍数组,遍历过程中,left初始为i+1,right初始为最后一个元素,然后如果left和right指向的元素符合目标值,将三个数放进结果中;如果不符合目标值,调整left和right的位置。

注意:要对三个数都进行去重操作。

i指向的是a,如果和前一个元素重复,就没必要再进行遍历了,跳过执行下一个元素。

left指向的是b,如果存入结果后,后一个元素仍然和当前元素相同,跳过后一个元素。

right指向的是c,如果存入结果后,前一个元素仍然和当前元素相同,跳过前一个元素。

通过双指针将时间复杂度由O(n3)降至了O(n2)

时间复杂度:O(n2)

class Solution {public List<List<Integer>> threeSum(int[] nums) {// 双指针法List<List<Integer>> res = new LinkedList<>();// 先进行排序Arrays.sort(nums);for (int i = 0; i < nums.length; i++) {// 如果当前最小的元素都大于0了,返回res就可以了if (nums[i] > 0) return res;// 对a去重,如果和前一个元素相同,说明已经判断过了,执行下一个if (i > 0 && nums[i] == nums[i - 1]) continue;int left = i + 1, right = nums.length - 1;while (left < right) {if (nums[i] + nums[left] + nums[right] < 0) {left++;} else if (nums[i] + nums[left] + nums[right] > 0) {right--;} else {res.add(Arrays.asList(nums[i], nums[left], nums[right]));while (left < right && nums[left] == nums[left + 1]) { // 对b去重left++;}while (left < right && nums[right] == nums[right - 1]) { // 对c去重right--;}left++;right--;}}}return res;}
}

8. 四数之和

题目链接:8. 四数之和

思路:使用双指针法,原理同三数之和。因为这次目标值可以指定为负数,所以要注意剪枝时的操作。用i和j确定a和b,用left和right寻找符合条件c和d。(同样要注意,这四个数,每个数都要进行去重操作。)

不要判断nums[k] > target 就返回了,三数之和 可以通过 nums[i] > 0 就返回了,因为 0 已经是确定的数了,四数之和这道题目 target是任意值。比如:数组是[-4, -3, -2, -1]target-10,不能因为-4 > -10而跳过。但是我们依旧可以去做剪枝,逻辑变成nums[i] > target && (nums[i] >= 0 || target >= 0)就可以了。

四数之和的双指针解法是两层for循环nums[k] + nums[i]为确定值,依然是循环内有left和right下标作为双指针,找出nums[k] + nums[i] + nums[left] + nums[right] == target的情况。

那么一样的道理,五数之和、六数之和等等都采用这种解法。

时间复杂度:O(n3)

class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {// 双指针法,类似三数之和List<List<Integer>> res = new LinkedList<>();// 先排序Arrays.sort(nums);for (int i = 0; i < nums.length; i++) {if (nums[i] > target && (nums[i] >= 0 || target >= 0)){// 剪枝操作return res;}if (i > 0 && nums[i] == nums[i - 1]) { // 对a去重continue;}for (int j = i + 1; j < nums.length; j++) {if (j > i + 1 && nums[j] == nums[j - 1]) // 对b去重continue;int left = j + 1, right = nums.length - 1;while (left < right) {if (nums[i] + nums[j] + nums[left] + nums[right] < target) {left++;} else if (nums[i] + nums[j] + nums[left] + nums[right] > target) {right--;} else {res.add(Arrays.asList(nums[i], nums[j], nums[left], nums[right]));while (left < right && nums[left] == nums[left + 1]) {// 对c去重left++;}while (left < right && nums[right] == nums[right - 1]) {// 对d去重right--;}left++;right--;}}}}return res;}
}

哈希表题目总结

从哈希表的理论基础到数组、set和map的经典应用,把哈希表的全貌呈现出来。

同时也强调虽然map是万能的,详细介绍了什么时候用数组,什么时候用set

相信通过代码随想录中的哈希表总结篇,大家可以对哈希表有一个全面的了解。


http://www.ritt.cn/news/28801.html

相关文章:

  • 校内 实训网站 建设方案百度竞价推广账户优化
  • 响应式网站制作视频图片优化
  • 做网站的专业长沙专业网络推广公司
  • 武汉网站建设哪家最好新网
  • 做网站的知识扬中网站制作
  • 新能源电动汽车电池使用寿命多久合肥seo网站管理
  • 浙江网站备案流程网站自建
  • 男女做那个视频网站网站优化关键词
  • 南平武夷山网站建设网络优化公司排名
  • 手机做网站自己做湖南正规seo公司
  • 网站内链是什么 怎么做企业培训课程ppt
  • 河北建设厅八大员报名网站深圳网站制作公司
  • 怎样做1个网站游戏推广平台哪个好
  • 做网站搭建服务器要多少钱百度一下百度首页登录
  • 一对一视频网站建设关键词查询
  • 建设网站需要哪些语言百度地图官网2022最新版下载
  • 做网站找模板去哪好seo搜索优化邵阳
  • 济南中桥信息做的小语种网站怎么样百度账号登录入口官网
  • 怎么办个人网站网络营销推广公司简介
  • 如何快速建立一个网站站长之家ppt模板
  • 自己做网站需要什么技能百度推广总部电话
  • 广州网站建设哪家有seo图片优化
  • wordpress 未加密seo接单一个月能赚多少钱
  • wordpress登录手机版湖南seo网站多少钱
  • 响应式网站广州网站建设搜索引擎优化的名词解释
  • 武汉做网站建设seo1视频发布会
  • 电子商务网站建设与维护总结抖音关键词用户搜索排名靠前
  • 武汉高端网站建设优化网络工程师培训机构排名
  • ps怎么做网站界面设计北京seo主管
  • 建设网站你认为需要注意哪些问题谷歌 翻墙入口