imax

讲讲ArrayList的扩容和什么是溢出感知代码

落花浮王杯 提交于 2020-01-27 09:52:29
ArrayList 的扩容分为主动扩容和自动扩容两种。主动扩容就是通过调用 ArrayList 提供的 ensureCapacity() 方法来主动增加 ArrayList 实例的容量。自动扩容就是向 ArrayList 实例添加元素时,如果容量不够,ArrayList 自动扩容的过程。 无论是主动扩容还是自动扩容,最终都是通过 grow() 方法来完成扩容,我们首先来看一下 grow() 方法。 一、扩容方法 grow() grow(int minCapacity) 方法实现的功能用一句话概括就是,如果 minCapacity 小于等于原数组的 1.5 倍,则扩容至原数组的 1.5 倍,如果 minCapacity 大于原数组的 1.5 倍,则扩容至 minCapacity。 请看源码: private void grow ( int minCapacity ) { // overflow-conscious code int oldCapacity = elementData . length ; int newCapacity = oldCapacity + ( oldCapacity >> 1 ) ; // newCapacity 是 oldCapacity 的 1.5 倍 if ( newCapacity - minCapacity < 0 ) newCapacity =

lectcode-乘积最大序列

霸气de小男生 提交于 2020-01-26 23:12:58
要求 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。 示例 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 代码 动态规划 int maxProduct(vector<int>& nums) { int max_value = INT_MIN,imax = 1,imin = 1; for(int i =0;i<nums.size();i++) { if(nums[i]<0) { int temp = imax; imax = imin; imin = temp; } imax = max(imax*nums[i],nums[i]); imin = min(imin*nums[i],nums[i]); max_value = max(max_value,imax); } return max_value; } 总结 遍历数组时计算当前最大值,不断更新 令imax为当前最大值,则当前最大值为 imax = max(imax * nums[i], nums[i]) 由于存在负数,那么会导致最大的变最小的,最小的变最大的。因此还需要维护当前最小值imin,imin = min

2D Texture from 2D array CUDA

匿名 (未验证) 提交于 2019-12-03 02:29:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I am trying to pass an Nx3 array to a kernel and read from it as in texture memory and write to a second array. Here is my simplified code with N=8: #include <cstdio> #include "handle.h" using namespace std; texture<float,2> tex_w; __global__ void kernel(int imax, float(*w)[3], float (*f)[3]) { int i = threadIdx.x; int j = threadIdx.y; if(i<imax) f[i][j] = tex2D(tex_w, i, j); } void print_to_stdio(int imax, float (*w)[3]) { for (int i=0; i<imax; i++) { printf("%2d %3.6f\t %3.6f\t %3.6f\n",i, w[i][0], w[i][1], w[i][2]); } } int main(void) {

GFortran and CodeBlocks issue with Modules and Multiple Files

匿名 (未验证) 提交于 2019-12-03 02:03:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I am working with GFortran and CodeBlocks but I'm having an issue about Modules and Multiple files. i keep getting this error: Fatal Error: Can't open module file 'mesh.mod' for reading at (1): No such file or directory For some reason, GFortran is not building the 'mesh.mod' file. This problem does not occur when I put all the code in a single .f90 file. Bellow is an example of code that this error happens. main.f90 MODULE MESH IMPLICIT NONE INTEGER :: IMAX,JMAX,NMAX REAL(8), ALLOCATABLE :: XD(:),YD(:),FX(:,:),FY(:,:) REAL(8) :: PI,E,DX,DY

LeetCode--152--乘积最大子序列(python)

泄露秘密 提交于 2019-12-01 06:50:38
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 令imax,imin为当前索引的最大最小值 当遇到负数的时候,负数乘最大值就变成了最小值,所以应该在比较之前把imax和imin调换 1 class Solution: 2 def maxProduct(self, nums: List[int]) -> int: 3 Max = nums[0] 4 imax,imin=1,1 5 for i in nums: 6 if i < 0: 7 imax,imin=imin,imax 8 imax= max(imax*i,i) 9 imin=min(imin*i,i) 10 Max = max(imax,Max) 11 return Max 来源: https://www.cnblogs.com/NPC-assange/p/11664849.html

最大子序和

妖精的绣舞 提交于 2019-11-27 10:51:35
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。 解:这道题关键要区分开连续最大值和最大值,我就写错了 另外动态公式为f(n) = max(f(n-1) + A[n], A[n]); 将这些最大和保存下来后,取最大的那个就是,最大子数组和。因为最大连续子数组 等价于 最大的以n个数为结束点的子数列和 class Solution { public: int maxSubArray(vector<int>& nums) { if(nums.empty()) { return 0; } int fn=0,i=0,imax=INT_MIN; for(;i<nums.size();i++) { fn=max(nums[i],fn+nums[i]); imax=max(imax,fn); } return imax; } }; 来源: https://www.cnblogs.com/wangshaowei/p/11360456.html