2013-09-25 7 views
6

मैं नहीं किसी को भी यह हल करने के लिए कह रहा हूं, मुझे बस थोड़ा धक्का चाहिए क्योंकि मुझे इसके साथ कहां से शुरू करना है पर कोई सांसारिक विचार नहीं है। मुझे पता है कि मुझे इसमें संग्रह लागू करना चाहिए और एक तरह का होना चाहिए।ArrayList सॉर्टिंग सबसे लंबा अनुक्रम

एक विधि लिखें सबसे लंबे समय तक सवारता जो पूर्णांक की सूची में सबसे लंबे क्रमबद्ध अनुक्रम की लंबाई देता है। उदाहरण के लिए, यदि किसी वैरिएबल सूची भी कहा जाता मूल्यों के निम्नलिखित अनुक्रम संग्रहीत करता है:

[1, 3, 5, 2, 9, 7, -3, 0, 42, 308, 17] 

कॉल तो: list.longestSortedSequence() मान 4 वापसी होगी क्योंकि यह इस सूची के भीतर सबसे लंबे समय तक हल कर अनुक्रम की लंबाई (है अनुक्रम -3, 0, 42, 308)। यदि सूची खाली है, तो आपकी विधि 0 वापस आनी चाहिए। ध्यान दें कि एक गैर-खाली सूची के लिए विधि हमेशा कम से कम 1 का मान वापस कर देगी क्योंकि कोई भी व्यक्ति तत्व क्रमबद्ध अनुक्रम का गठन करता है।

Assume you are adding to the ArrayIntList class with following fields: 

public class ArrayIntList 
{ 
    private int[] elementData; 
    private int size; 

    // your code goes here 
} 
+6

+1 आपको जवाब देने के लिए जवाब नहीं मांगने के लिए +1! –

+1

यह दुख की बात है कि जो लोग सोचते हैं कि @ musical_coder की टिप्पणी उपयोगी है, वे सभी वास्तव में अपवित्र नहीं हैं। – allprog

उत्तर

1

क्या आपने लूप के बारे में सोचा है और यदि कोई और बयान है? मुझे उम्मीद है कि यह इसे दूर नहीं करेगा। एक समय में एक तत्व सोचो।

+1

यह थोड़ा बहुत गूढ़ हो सकता है :) प्रोग्रामिंग संरचनाओं के बजाय एल्गोरिदम के संदर्भ में वर्णन करें। लोगों को कोड निर्देशों के बजाय संचालन और कार्यों के मामले में सोचना शुरू करना चाहिए। संहिता सिर्फ उन विचारों की ट्रेन का एक अभिव्यक्ति है जो हर समय हमारे सिर में खेल रही है। – allprog

0

अपनी सरणी पर लूप करें और i+1 तत्व के साथ i तत्व की तुलना करें। एक काउंटर बनाओ ii+1 से कम है काउंटर वृद्धि, ii+1 से अधिक है काउंटर को रीसेट करें।

3

सरणी को घुमाएं, और काउंटर वैरिएबल को बढ़ाएं यदि आपके द्वारा संसाधित किया गया अगला तत्व अंतिम है तो अंतिम।

अगर अपने बड़े तो वर्तमान में संग्रहीत अधिकतम मूल्य और 0.

2

छद्म कोड के साथ रीसेट काउंटर चर अगले तत्व छोटा होता है, या सरणी के अंत तक पहुँच जाता है, तो वर्तमान काउंटर मूल्य की दुकान:

Variable X: first item of list 
Variable Y: length of sequence (initial: 1) 
Variable Z: max length occurred (initial: 0) 
Loop over the list starting from 2nd index 
if item is higher than X 
    set X to item 
    add 1 to Y 
else 
    if Y is higher than Z 
    set Z to Y 
    end if 
    set X to item 
    set Y to 1 
end if 
End-Loop 

यह विधि हर बार अनुक्रम 'पुनरारंभ', उर्फ ​​को काउंटर को पुनरारंभ करेगा: अब यह क्रमबद्ध नहीं है। जबकि सूची को क्रमबद्ध किया गया है, वैसे क्रमबद्ध क्रम में प्रत्येक तत्व के लिए 1 जोड़ता है।

जब अनुक्रम का आदेश दिया जाता है तो यह जांचता है कि वर्तमान अनुक्रम अब तक की सबसे लंबी अनुक्रम लंबाई से अधिक लंबा है या नहीं। यदि ऐसा है, तो आपका नया सबसे लंबा अनुक्रम है।

संबंधित मुद्दे