zoukankan      html  css  js  c++  java
  • Leetcode

    和Jump Game几乎相同的想法,他们是DP。关键是使用数组maxNumbers[k]储存的地方k步骤的话。序列号的最远范围,注阵maxNumbers[]它递增。


    class Solution {
    public:
    	const int MAXVALUE = 1 << 30;
    
    	int findMinStepToIndex(int maxNumbers[],int maxSteps,int index)
    	{
    		if (index == 0)
    			return 0;
    
    		int left = 1;
    		int right = maxSteps;
    
    		while (left < right)
    		{
    			int m = (left + right) / 2;
    
    			if (maxNumbers[m] < index)
    			{
    				left = m + 1;
    			}
    			else if (maxNumbers[m] > index)
    			{
    				if (maxNumbers[m - 1] < index)
    					return m;
    				else if (maxNumbers[m - 1] == index)
    					return m - 1;
    				else
    					right = m - 1;
    			}
    			else
    			{
    				return m;
    			}
    		}
    
    		return (right + left) / 2;
    	}
    
    	int jump(int A[], int n) {
    		int* maxNumbers = new int[n];//mark the max number that steps i can walk.
    		int maxIndex = 0;
    		int maxNumber = 0;//the max index we can walk to.
    		maxNumbers[0] = 0;
    		for (int i = 1; i < n; i++){
    			maxNumbers[i] = 0;
    		}
    		int maxSteps = 0;
    
    		for (int i = 0; i < n - 1; i++){
    
    			if (maxNumber < i + A[i])
    			{
    				int cMinStep = findMinStepToIndex(maxNumbers, maxSteps, i);
    
    				maxNumbers[cMinStep + 1] = i + A[i]; 
    				maxNumber = i + A[i];
    
    				maxSteps = cMinStep + 1;
    
    				if (maxNumber >= n - 1)
    					return maxSteps;
    			}
    		}
    	}
    };


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    linux上安装mysql
    linux 上nginx配置
    js人民币数字转大写
    pm2常用命令
    基于redis实现分布式锁
    Enterprise Architect 14破解版 安装包 安装教程
    一些有用的链接
    Linux安装Zookeeper
    根据朋友圈的网易云音乐分享找到人
    我的待做事项
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4868267.html
Copyright © 2011-2022 走看看