[leetCode刷题笔记]2017.03.24
来源:互联网 发布:vb教程我要自学网 编辑:程序博客网 时间:2024/05/29 09:01
274. H-Index
这道题用一个新的数组,存储每个每个引用次数出现的频率,注意如果某文章引用次数大于科学家发文章的总数,则看作等于发文章总数的频率。
然后再从前往后加计算满足H-INDEX条件的最大值。
public class Solution { public int hIndex(int[] citations) { int len = citations.length; if (len <=0) { return 0; } int[] arr= new int[len + 1]; for (int i = 0; i < len; i++) { if (citations[i] >= len) { arr[len]++; } else { arr[citations[i]]++; } } int k = 0; int res = 0; for (int i = len; i >= 0; i--) { k += arr[i]; if (k >= i) { return i; } } return 0; }}
324. Wiggle Sort II
先找出数组中中位数,然后小于这个数的放奇数,其他放偶数。找中位数用到快排思想。
public class Solution { public void wiggleSort(int[] nums) { int median = findKthLargest(nums, (nums.length + 1) / 2); int n = nums.length; int left = 0, i = 0, right = n - 1; while (i <= right) { if (nums[newIndex(i,n)] > median) { swap(nums, newIndex(left++,n), newIndex(i++,n)); } else if (nums[newIndex(i,n)] < median) { swap(nums, newIndex(right--,n), newIndex(i,n)); } else { i++; } } } private int newIndex(int index, int n) { return (1 + 2 * index) % (n | 1); } private int findKthLargest(int[] nums, int k) { return findKthLargest(nums, k, 0, nums.length - 1); } private int findKthLargest(int[] nums, int k, int l, int r) { if (l >= r) { return nums[l]; } int m = partition(nums, l, r); if (m == k) { return nums[m]; } else if (m < k) { return findKthLargest(nums, k, m + 1, r); } else { return findKthLargest(nums, k, l, m - 1); } } private int partition(int[] nums, int l, int r) { int pivot = nums[l]; int m = l; int n = l+1; while(n <= r) { if(nums[n] < pivot){ swap(nums, ++m, n); } n++; } swap(nums, l, m); return m; } public void swap(int[] nums, int a, int b) { int temp = nums[a]; nums[a] = nums[b]; nums[b] = temp; }}
0 0
- [leetCode刷题笔记]2017.03.24
- Leetcode刷题笔记
- LeetCode刷题笔记
- LeetCode刷题笔记
- leetcode刷题笔记
- [leetCode刷题笔记]2017.03.23
- [leetCode刷题笔记]2017.03.25
- [leetCode刷题笔记]2017.03.26
- [LeetCode] 刷题笔记(一)
- [LeetCode]刷题笔记二
- [leetCode]刷题笔记三
- LeetCode刷题笔记一
- LeetCode刷题笔记二
- LeetCode刷题笔记三
- [LeetCode刷题笔记] 关于LeetCode的前言
- leetCode刷题笔记(六)
- leetcode刷题笔记-two sum
- leetcode刷题笔记-ZigZag Conversion
- mybatis映射问题,报错Error instantiating null with invalid types () or values (). Cause:java.lang.NullPoint
- Mybatis-environments(实例讲解)
- Java中List和ArrayList的区别
- [Android]异步任务AsyncTask使用解析
- 从互联网的发展看国产Linux的腐败
- [leetCode刷题笔记]2017.03.24
- Leetcode 31 Next Permutation
- web.xml设置全局变量
- LeetCode--No.62--Unique Paths
- java web 自定义域名
- hibernate3-maven-plugin插件入门
- LeetCode--No.63--Unique Paths II
- SpringDataJPA入门配置
- 2.3.1.Spring 整合 JPA