当前位置: 首页 > 知识库问答 >
问题:

需要帮助解决具有挑战性的数据结构问题

蒙经纶
2023-03-14

我遇到了这个问题,给定一个整数数组,判断整数序列是从左、右还是死端退出数组。您从左侧输入数组并沿指定方向移动N个索引(其中N是整数的值)(正是右,负是左)

Examples
[1,1,1] -> Exits Right
[1,-2]=> Exits Left
[2,0,-1]-> Deadends
[2,5,1,-2,0]-> Exits Right

我想到的一个解决方案是,若所有整数的值都是正的,那个么就向右退出或向左退出。但是,此解决方案并不涵盖所有场景。我需要帮助来解决这个问题。

共有2个答案

后凯捷
2023-03-14

这里有一些粗糙的golang:

package main

import (
  "fmt"
)

func WhereIsTheExit(arr []int) {
  
  if (len(arr) == 0) {
    fmt.Println("No elements")
    return
  } 

  i := arr[0]

  for p := 1; p < len(arr); p++ {

    fmt.Printf("Current value: %d\n", i)

    if (i > len(arr) - 1 || i < 0) {
      break
    }

    i += arr[i]

    fmt.Printf("Next value: %d\n", i)
  }

  if (i >= len(arr)) {
    fmt.Println("====> right")
  } else if (i < 0) {
    fmt.Println("====> left")
  } else {
    fmt.Println("====> deadend")
  }
}

func main() {

  empty := []int{}
  deadend := []int{1,2,0,-3}
  deadend2 := []int{1,0,-1}
  right := []int{2,0,3,0,0}
  right2 := []int{1,2,0,4,0,2,7,1}
  left := []int{1,-2}
  left2 := []int{1,2,0,3,0,0,-10}

  WhereIsTheExit(empty)
  WhereIsTheExit(deadend)
  WhereIsTheExit(deadend2)
  WhereIsTheExit(right)
  WhereIsTheExit(right2)
  WhereIsTheExit(left)
  WhereIsTheExit(left2)
}

试用:https://play.golang.org/p/KU4mapYf_b3

奚曦哲
2023-03-14

你可以这样做:

  • 创建一个变量以保持索引位置,并用第一个值初始化它

基于此,下面是一个使用Javascript的示例:

js lang-js prettyprint-override">function printDirection(arr) {
  let index = arr[0];
  for (let i = 1; i < arr.length; i++) {
    /**
     * Below condition covers following cases:
     * 1. If the value is undefined. This will happen if index is out of bound
     * 2. If value is 0. In this case, `index` will never change and remaining iterations can be skipped
     */
    if (!arr[index]) break;
    index += arr[index]
  }
  if (index >= arr.length) {
    console.log('Exit Right')
  } else if (index < 0) {
    console.log('Exit Left')
  } else {
    console.log('Deadend')
  }
}

const data = [
  [1, 1, 1],
  [1, -2],
  [2, 0, -1],
  [2, 5, 1, -2, 0],
]
data.forEach((arr) => printDirection(arr))
 类似资料:
  • 我正在尝试解决hackerrank中的一个“几乎已排序”的挑战。问题是: 给定一个包含元素的数组,可以只使用以下操作之一按升序对该数组进行排序吗? 交换两个元素。反转一个子段。 输入格式 第一行包含一个整数,指示数组的大小。 下一行包含以空格分隔的整数。 样本输入#1 2 4 2 示例输出 #1 是< br >交换1 2 示例输入 #2 3 3 1 2 样品输出#2 不 示例输入 #3 6 1 5

  • 我想深入了解Jmeter输出。 > 我对吞吐量率的概念感到困惑。这是否意味着服务器在给定负载下只能处理48.1个请求/分钟,还是意味着其他什么。总吞吐量速率和单个请求显示的吞吐量速率之间的差异是什么。在我的情况下,发送了8个请求,单个请求显示吞吐量为6.1/min。请解释一下。 我需要建议服务器端的任何更改/解释jmeter报告,请建议我如何解释需要做什么。 总的总结报告如下: 总用户: 100上

  • 我正在使用android Studio学习应用程序开发。 在build.gradle页面上,我遇到了一个错误,即 “编译'com.android.support:appcompat-v7:25.2.0'”

  • 首先,如果我搞砸了我的描述,我是新手,基本上我在正确使用node上遇到了麻烦,我跟随了youtube教程,直到老师告诉我们重新运行我们的代码,当我尝试使用他做的代码时,我得到了这个错误。 我搜索了错误中提到的,但找不到文件夹,我认为它是问题的一部分。 我尝试了很多方法,例如使用,这导致了这个cmd日志; 我还尝试删除我的和,但没有结果。 任何帮助都是感激的,并提前表示感谢:) 编辑:这里是pack

  • 我需要一些帮助用JSOUP解析这个html。我正在尝试从表中的每一列获取数据值。我一直在看JSoup文档,试图弄清楚我到底需要做什么,但还是不确定。看起来网站使用了CSS和内联格式的组合;其中大部分可以转换为CSS并减小页面大小。 这是html文件的一个小片段(实际上差不多有5 MB大小)。 更新:我已经更新了源代码,以更准确地显示html的结构。我假定tbody将位于表元素中是一个给定的条件。我

  • 实际上,我正在尝试在2个不同的插件项目中的2个portlet之间共享数据 以下是我分享数据的步骤: 步骤1:创建名为Senderproj的liferay插件项目,并在Senderport下创建一个portlet,然后在doView方法中编写以下代码 Step2:创建名为Receiverproj的增殖插件项目并创建一个名为Receiverport的portlet,然后在doView方法中编写下面的代